PDA

View Full Version : تبدیلگر ایران سیستم به یونیکد



dorparasti
دوشنبه 01 آبان 1391, 09:27 صبح
ایران سیستم (http://en.wikipedia.org/wiki/Iran_System_encoding_standard)یک کاراکتر انکودینگ برای نمایش کاراکترهای فارسی در محیط DOS بود و مورد استفاده قرار می گرفت و البته همچنان در بسیاری از نرم افزارهای تحت DOS در سازمان ها مورد استفاده است . کدهای مختلفی برای تبدیل این انکودینگ به انکودهای استاندارد تحت ویندوز وجود دارد که از آنجا که هیچکدام به نظرم جالب نبودند ، سعی کردم خودم یک مبدل برای تبدیل آن به فرمت Unicode بنویسم . ایران سیستم یک انکودینگ 8 بیتی مبتنی بر ACII (http://en.wikipedia.org/wiki/ASCII) است . 128 کاراکتر ابتدایی آن دست نخورده و همان کاراکتر های ASCII است . تنها از کاراکتر 128 الی 255 استفاده شده است .
روش کار مبدل : برای تبدیل بر خلاف روش هایی که از طریق انجام محاسبات اینکار را انجام می دهند من از نگاشت کاراکترها استفاده کردم . به این ترتیب که ابتدا رشته حاوی کاراکترهای ایران سیستم را با استفاده از انکودینگ Arabic (Windows 1256) (http://en.wikipedia.org/wiki/Windows-1256)تبدیل به آرایه از بایت ها می کنم . سپس برای هر بایت در جدول CodePage مربوط به ایران سیستم معادل آن را در جدول CodePage مربوط به Windows 1256 پیدا و ایندو را در یک قالب یک Key/Value Pair در یک Dictionary ثبت می کنم . برای مثال فرم کامل کاراکتر ب در خانه 146 جدول CodePage ایران سیستم قرار دارد درحالی در جدول CodePage مربوط به Windows 1256 در خانه 200 است .
نکته ای که در مورد ایران سیستم باید توجه داشت اینست که فرم های مختلف یک کاراکتر را جداگانه انکود می کند . در حالی که در Arabic تمام فرم های یک کاراکتر یک انکود دارند و نمایش فرم های مختلف توسط فونت ها و نرم افزار نمایش دهنده مدیریت می شود .
در مرحله آخر بعد از یافتن معادل تمام کاراکترها در انکودینگ Arabic آنها را تبدیل به Unicode می کنم .
+ سورس (https://github.com/mohsen-d/IranSystemConvertor/)