PDA

View Full Version : مقاله: اعداد در UniCode فارسي



anooshiran
پنج شنبه 09 مهر 1388, 17:42 عصر
سلام دوستان

برخي از دوستان وقتي يك عدد فارسي را به Hex تبديل مي كنند دچار شگفتي مي شوند. و اين است كه انتظار دارند، مثلا عدد 1 در Hex تبديل به 0661 يا 06f1 شود ولي با تعجب مشاهده مي كنند كه عدد 1 در Hex تبديل به 0031 مي گردد. و غالبا به دنبال راه حلي براي رفع اين مشكل مي گردند.

براي روشن شدن اين موضوع لازم ديدم مختصري در رابطه با unicode اعداد فارسي صحبت كنم.


بين اعداد فارسي و عربي در 3 عدد (4و5و6) اختلاف نگارش وجود دارد. بدين دليل و ديگر دلايل فني استاندارد unicode دو دسته اعداد فارسي و عربي را از هم جدا نموده است.

دسته فارسي آن به نام Extended Arabic - Indic Digtis ناميده مي شود و Unicode آن از 0660 تا 0669 در Hex مي باشد.

دسته عربي آن به نام Arabic - Indic Digits و Unicode آن از 06f0 تا 06f9 در Hex مي باشد.

جداكنده هزارگان در عربي و فارسي با عدد Hex 066c و مميز اعشاري با عدد Hex 066b مشخص شده اند.


ما ايرانيان در نگارش فارسي اعداد را هم به زبان فارسي نوشته و مي خوانيم بنابر اين نياز داريم كه شماره صفحات ، ارزش پولي ، سايز فونت ، شماره سلول هاي صفحات گسترده و ... به زبان فارسي باشد. اين سطح از پشتيباني نيازمند تجزيه ارقام فارسي به عنوان داده هاي عددي توسط ميزبان (OS) است.
ما ايرانيان ارقام را در محيط هاي لاتين زبان به سيستم غربي نوشته و مي خوانيم. بر عكس اعراب كه بسياري حتي امروزه اعداد را در وسط تحرير لاتين به زبان عربي مي نويسند.

ولي تا كنون تبديل اتوماتيك ارقام لاتين به فارسي يا عربي و بالعكس گزينه پيش روي هيچ كدام از شركت هاي نرم افزاري نبوده.نرم افزار هاي مايكروسافت هنوز اقدام به ترجمه ارقام فارسي به عنوان داده هاي عددي ننموده اند. ولي براي خالي نبودن عريضه ارقام غربي را روي كيبورد فارسي شان گذاشته اند. كه در Regional and language option از آن به Farsi نام مي برند. حتي اگر توجه كنيد در آنحا فقط صحبت از تغيير علائم و كيبورد است . مانند واحد پول ، قالب بندي تاريخ و...

بنابراين هرگز نبايد اين دو دسته ارقام را با دسته لاتين از ارقام Ascii كه به شماره هاي عربي معروفند اشتباه نمود.

آنچه شما از كيبورد به عنوان عدد فارسي مي گيريد در اصل همان اعداد لاتين است و هيچ ربطي به Uncode فارسي ندارد.


برنامه كوچكي هم براي تبديل Unicode به Hex و بالعكس برايتان در ضميمه گذاشته ام تا اگر مايل بوديد اين مطالب را خود تست كنيد.