ایران سیستم یک کاراکتر انکودینگ برای نمایش کاراکترهای فارسی در محیط DOS بود و مورد استفاده قرار می گرفت و البته همچنان در بسیاری از نرم افزارهای تحت DOS در سازمان ها مورد استفاده است . کدهای مختلفی برای تبدیل این انکودینگ به انکودهای استاندارد تحت ویندوز وجود دارد که از آنجا که هیچکدام به نظرم جالب نبودند ، سعی کردم خودم یک مبدل برای تبدیل آن به فرمت Unicode بنویسم . ایران سیستم یک انکودینگ 8 بیتی مبتنی بر ACII است . 128 کاراکتر ابتدایی آن دست نخورده و همان کاراکتر های ASCII است . تنها از کاراکتر 128 الی 255 استفاده شده است .
روش کار مبدل : برای تبدیل بر خلاف روش هایی که از طریق انجام محاسبات اینکار را انجام می دهند من از نگاشت کاراکترها استفاده کردم . به این ترتیب که ابتدا رشته حاوی کاراکترهای ایران سیستم را با استفاده از انکودینگ Arabic (Windows 1256) تبدیل به آرایه از بایت ها می کنم . سپس برای هر بایت در جدول CodePage مربوط به ایران سیستم معادل آن را در جدول CodePage مربوط به Windows 1256 پیدا و ایندو را در یک قالب یک Key/Value Pair در یک Dictionary ثبت می کنم . برای مثال فرم کامل کاراکتر ب در خانه 146 جدول CodePage ایران سیستم قرار دارد درحالی در جدول CodePage مربوط به Windows 1256 در خانه 200 است .
نکته ای که در مورد ایران سیستم باید توجه داشت اینست که فرم های مختلف یک کاراکتر را جداگانه انکود می کند . در حالی که در Arabic تمام فرم های یک کاراکتر یک انکود دارند و نمایش فرم های مختلف توسط فونت ها و نرم افزار نمایش دهنده مدیریت می شود .
در مرحله آخر بعد از یافتن معادل تمام کاراکترها در انکودینگ Arabic آنها را تبدیل به Unicode می کنم .
+ سورس