۱۳۸۸ خرداد ۲۰, ۰۳:۴۵ ب.ظ
سلام دوستان،
امروزه دغدغه بسیاری از عزیزانی که در اینترنت فعالیت دارند ندانستن معنی کامل یونیکد و انتخاب یک Charset خوب می باشد. با استفاده از چند منبع که در پایان به آنها اشاره شده، توانستم یک مقاله خوب و آموزنده بنویسم.
يونيكد چيست؟
از جمله استانداردهاي بينالمللي كه كاملتر از بقيه استانداردهاي موجود به رفع نيازهاي مربوط به تبادل اطلاعات چندزبانه پرداختهاست، ميتوان به استاندارد يونيكد اشاره كرد.
اين استاندارد، تقريباً توسط تمامي شركتهاي بينالمللي كامپيوتري، مانند آيبيام، مايكروسافت، و سان، و نيز موسسات ملي استاندارد در كشورهاي مختلف جهان براي تبادل اطلاعات چندزبانه مورد توافق قرار گرفته است و سرعت رشد بسيار زيادي نيز در ميان كاربران دارد. همينطور، در تال تاضر كليه استانداردهاي جديدي كه براي شبكه اينترنت طراتي ميشوند، اين دو استاندارد را بهعنوان كدپيج پيشفرض ميپذيرند كه استاندارد XML و زبان جاوا از آن جملهاند.
به زبان ساده ميتوان گفت كه يونيكد روشي براي تبديل متون به رشتههاي عددي قابل ذخيره در كامپيوتر است. روشهاي گوناگوني براي اين كار وجود دارند، ولي مزيت يونيكد نسبت به آنها، اين است كه يك روش كامل جهاني است؛ به اين معني كه تروف همه زبانهاي دنيا و تمامي علائم مورد استفاده همه مردم جهان در آن آمدهاند و همچنين در همهجا قابل نمايش است و نياز به امكانات خاصي ندارد. البته يونيكد هنوز جوان است ولي امروزه بسياري نرمافزارهاي رايج در جهان (از جمله همه مرورگرهاي جديد اينترنت) آن را پشتيباني ميكنند.
از مهمترين مزايايي كه يونيكد براي زبان فارسي دارد (مثل بسياري زبانهاي ديگر) ميتوان موارد زير را نام برد:
1. در نسخه استاندارد هر نرمافزاري كه از اين استاندارد پشتيباني كند، ميتوان فارسي نوشت يا متون فارسي را خواند. بدين ترتيب ديگر نيازي به تأمين نسخههاي خاص فارسي يا عربي نيست.
2. براي خواندن متون فارسي كه توسط شركت خاصي نوشته شدهاند، نيازي به داشتن فونت خاص آن شركت نداريم و هر متن فارسي كه با استاندارد يونيكد، كدگذاري شده باشد، با هر فونت يونيكدي قابل مشاهده است.
3. امكان استفاده همزمان از زبانهاي فارسي و انگليسي را تأمين ميكند.
4. بدون استفاده از فونتهاي خاص امكان استفاده از علائم خاص را فراهم ميكند.
به بيان ديگر، «استاندارد يونيكد» استاندارد جهاني كدگذاري كاركترهاست كه براي پردازش كامپيوتري متون به كار ميرود. اين استاندارد همان كاراكترها و كدهاي استاندارد ISO/IEC 10646 را داراست و كاملا با آن سازگار است. پس در واقع هر پيادهسازي سازگار با يونيكد، با ISO/IEC 10646 نيز سازگار است.
يونيكد امكان كدگذاري همه كاراكترهاي مورد استفاده در نوشتن زبانهاي دنيا را فراهم آوردهاست. اين استاندارد از كدگذاري 16بيتي استفاده ميكند كه براي بيش از65000 نويسه (كاراكتر) جا فراهم ميكند. اگر چه 65000 نويسه براي كدگذاري اكثر نويسههايي كه در زبانهاي مهم دنيا استفاده ميشود كافي است، با اين تال يونيكد شيوهگسترشي بهنام UTF-16 فراهمكردهاست كه امكان اضافهكردن تدود يك ميليون نويسه ديگر را نيز ميدهد. اين دامنه براي كليه نويسههاي عالم، از جمله پوشش كامل همه خطهاي باستاني (همچون خط ميخي) نيز كافي است.
يونيكد براي كليه نويسههاي مورد استفاده در زبانهاي عمده دنيا كد تعيينكردهاست. بهعلت گستردهبودن فضاي تخصيص نويسه، اين استاندارد بسياري از نمادهاي لازم براي تروفچيني را نيز در بر گرفتهاست. از خطهاي مورد پشتيباني اين استاندارد ميتوان به لاتين (دربرگيرنده اكثر زبانهاي اروپايي)، سيريليك(روسي، صربي)، يوناني، عربي (شامل عربي، فارسي، اردو، كردي)، عبري، هندي، ارمني، آسوري، چيني، كاتاكانا و هيراگانا(ژاپني)، و هانگول (كرهاي) اشارهكرد. بهعلاوه، تعداد زيادي نماد رياضي و فني علائم نقطهگذاري، پيكان، و علامتهاي متفرقهدر اين استاندارد وجود دارد. اين استاندارد براي علامتهاي تركيبشونده يا اعرابها نيز كدهايي در نظر گرفتهاست كهاز جمله آنها علامتهايي چون «?» (مد)هستند كه در تركيبب تروف پايه، تروف تغييرلتن يافتهاي چون «?» را ميسازند.
به طور كلي، بعضي از مشخصات يونيكد به شرت زير است:
نويسههاي شانزدهبيتي
يكيسازي (اختصاص يك كد به نويسههاي مشترك در چند زبان مختلف)
نويسه، نه شكل (يك «ع»، و نه چهارتا: «ع»، «ع»، «ع»، «ع»)
بار معنايي (ترفبودن، مقدار عددي، ...)
در استاندارد يونيكد، نويسههاي فارسي در بلوك مربوط بهخط عربي قرار دارند. اين بلوكبراي دربرگرفتن نويسههاي زبانهايي كهاز خط عربياستفادهميكنند، مثل فارسي، اردو، پشتو، سندي، و كردي گسترش يافته است. اين بلوك نشانههاي قرآني از قبيل نشانههاي سجده و پايان آيه، و علائم وقف را نيز در بردارد.
در يونيكد با وجود يكيسازي كدهاي تروف مشترك، براي تروف فارسي كه بار معنايي يا نمايشي متفاوت با تروف عربي دارند، نويسههاي جداگانه درنظر گرفتهشدهاست. يعني كليه تروف خاص فارسي (پ، چ، ژ، گ) و نيز «ك» و «ي» فارسي كهبا ترف مشابهدر عربيتفاوت نمايشي دارند، مكانجداگانهاي بهخود اختصاص دادهاند. كليه اعرابهاي متداول تضور دارند و ميان شكلفارسي/اردو و عربي ارقام نيز بهعلت شكل و رفتار متفاوت، تفاوتهايي منظور گشتهاست.
از طرف ديگر، علائم نقطهگذاري چون نقطه و فاصله كهشكلي كسانيدر خطهاي لاتين و عربي دارند، كد يكسان دارند. علائميچون پرانتز نيز، بسته به جهت متن، آينهاي ميشوند، به طور مثال، نويسه 0028 نماينده «پرانتز باز» است، و نه«پرانتز سمتچپ». يونيكد اتصالمجازي و فاصله مجازي را نيز تتتنامهاي «اتصال با عرضصفر» و «بياتصالي با عرضصفر» بهرسميت ميشناسد.
بدن ترتيب ملاتظه ميشود كه براي تل مشكلات موجود، و نيز رفتن به سوي يك استاندارد مقبول و همهجانبه، استاندارد يونيكد، روشي مناسب به نظر ميرسد. در شمارههاي آتي ماهنامه نيز به اين موضوع از جنبههاي ديگر خواهيم پرداخت.
اصطلاحات
نويسه: در مقابل character. كوچكترين واتد متن. مثلاً يك ترف لاتين، يك اعراب فارسي، يكي علامت نقطهگذاري، يك نشانه بريل، يا يك نماد رياضي
شكل: در مقابل glyph. كوچكترين واتد نمايش متن. براي بعضي نويسهها مثل تروف فارسي و هندي ممكن است چند شكل موجود باشد. مثلاً « ب » و « ع » از اشكالنمايشي متسوب ميشوند
مجموعهنويسه: در مقابلcharacter set. مجموعهاي از نويسهها كهبههر نويسه عددي اختصاصميدهد كه نماينده آن نويسه متسوب ميشود و در تبادل اطلاعات مورد استفادهقرار ميگيرد
مجموعه كد: در مقابل codepage. سيستمي كه بههر نويسه دنباله مشخصياز بايتها را متناظر ميكند. مجموعهنويسهها ميتوانند بهشكل يا چند مجموعهكد قابل استفادهباشند.
لیست کامل Charset های موجود
منابع:
دانشگاه صنعتي شريف
شوراي عالي انفورماتيك
ویکی پدیا
امروزه دغدغه بسیاری از عزیزانی که در اینترنت فعالیت دارند ندانستن معنی کامل یونیکد و انتخاب یک Charset خوب می باشد. با استفاده از چند منبع که در پایان به آنها اشاره شده، توانستم یک مقاله خوب و آموزنده بنویسم.
يونيكد چيست؟
از جمله استانداردهاي بينالمللي كه كاملتر از بقيه استانداردهاي موجود به رفع نيازهاي مربوط به تبادل اطلاعات چندزبانه پرداختهاست، ميتوان به استاندارد يونيكد اشاره كرد.
اين استاندارد، تقريباً توسط تمامي شركتهاي بينالمللي كامپيوتري، مانند آيبيام، مايكروسافت، و سان، و نيز موسسات ملي استاندارد در كشورهاي مختلف جهان براي تبادل اطلاعات چندزبانه مورد توافق قرار گرفته است و سرعت رشد بسيار زيادي نيز در ميان كاربران دارد. همينطور، در تال تاضر كليه استانداردهاي جديدي كه براي شبكه اينترنت طراتي ميشوند، اين دو استاندارد را بهعنوان كدپيج پيشفرض ميپذيرند كه استاندارد XML و زبان جاوا از آن جملهاند.
به زبان ساده ميتوان گفت كه يونيكد روشي براي تبديل متون به رشتههاي عددي قابل ذخيره در كامپيوتر است. روشهاي گوناگوني براي اين كار وجود دارند، ولي مزيت يونيكد نسبت به آنها، اين است كه يك روش كامل جهاني است؛ به اين معني كه تروف همه زبانهاي دنيا و تمامي علائم مورد استفاده همه مردم جهان در آن آمدهاند و همچنين در همهجا قابل نمايش است و نياز به امكانات خاصي ندارد. البته يونيكد هنوز جوان است ولي امروزه بسياري نرمافزارهاي رايج در جهان (از جمله همه مرورگرهاي جديد اينترنت) آن را پشتيباني ميكنند.
از مهمترين مزايايي كه يونيكد براي زبان فارسي دارد (مثل بسياري زبانهاي ديگر) ميتوان موارد زير را نام برد:
1. در نسخه استاندارد هر نرمافزاري كه از اين استاندارد پشتيباني كند، ميتوان فارسي نوشت يا متون فارسي را خواند. بدين ترتيب ديگر نيازي به تأمين نسخههاي خاص فارسي يا عربي نيست.
2. براي خواندن متون فارسي كه توسط شركت خاصي نوشته شدهاند، نيازي به داشتن فونت خاص آن شركت نداريم و هر متن فارسي كه با استاندارد يونيكد، كدگذاري شده باشد، با هر فونت يونيكدي قابل مشاهده است.
3. امكان استفاده همزمان از زبانهاي فارسي و انگليسي را تأمين ميكند.
4. بدون استفاده از فونتهاي خاص امكان استفاده از علائم خاص را فراهم ميكند.
به بيان ديگر، «استاندارد يونيكد» استاندارد جهاني كدگذاري كاركترهاست كه براي پردازش كامپيوتري متون به كار ميرود. اين استاندارد همان كاراكترها و كدهاي استاندارد ISO/IEC 10646 را داراست و كاملا با آن سازگار است. پس در واقع هر پيادهسازي سازگار با يونيكد، با ISO/IEC 10646 نيز سازگار است.
يونيكد امكان كدگذاري همه كاراكترهاي مورد استفاده در نوشتن زبانهاي دنيا را فراهم آوردهاست. اين استاندارد از كدگذاري 16بيتي استفاده ميكند كه براي بيش از65000 نويسه (كاراكتر) جا فراهم ميكند. اگر چه 65000 نويسه براي كدگذاري اكثر نويسههايي كه در زبانهاي مهم دنيا استفاده ميشود كافي است، با اين تال يونيكد شيوهگسترشي بهنام UTF-16 فراهمكردهاست كه امكان اضافهكردن تدود يك ميليون نويسه ديگر را نيز ميدهد. اين دامنه براي كليه نويسههاي عالم، از جمله پوشش كامل همه خطهاي باستاني (همچون خط ميخي) نيز كافي است.
يونيكد براي كليه نويسههاي مورد استفاده در زبانهاي عمده دنيا كد تعيينكردهاست. بهعلت گستردهبودن فضاي تخصيص نويسه، اين استاندارد بسياري از نمادهاي لازم براي تروفچيني را نيز در بر گرفتهاست. از خطهاي مورد پشتيباني اين استاندارد ميتوان به لاتين (دربرگيرنده اكثر زبانهاي اروپايي)، سيريليك(روسي، صربي)، يوناني، عربي (شامل عربي، فارسي، اردو، كردي)، عبري، هندي، ارمني، آسوري، چيني، كاتاكانا و هيراگانا(ژاپني)، و هانگول (كرهاي) اشارهكرد. بهعلاوه، تعداد زيادي نماد رياضي و فني علائم نقطهگذاري، پيكان، و علامتهاي متفرقهدر اين استاندارد وجود دارد. اين استاندارد براي علامتهاي تركيبشونده يا اعرابها نيز كدهايي در نظر گرفتهاست كهاز جمله آنها علامتهايي چون «?» (مد)هستند كه در تركيبب تروف پايه، تروف تغييرلتن يافتهاي چون «?» را ميسازند.
به طور كلي، بعضي از مشخصات يونيكد به شرت زير است:
نويسههاي شانزدهبيتي
يكيسازي (اختصاص يك كد به نويسههاي مشترك در چند زبان مختلف)
نويسه، نه شكل (يك «ع»، و نه چهارتا: «ع»، «ع»، «ع»، «ع»)
بار معنايي (ترفبودن، مقدار عددي، ...)
در استاندارد يونيكد، نويسههاي فارسي در بلوك مربوط بهخط عربي قرار دارند. اين بلوكبراي دربرگرفتن نويسههاي زبانهايي كهاز خط عربياستفادهميكنند، مثل فارسي، اردو، پشتو، سندي، و كردي گسترش يافته است. اين بلوك نشانههاي قرآني از قبيل نشانههاي سجده و پايان آيه، و علائم وقف را نيز در بردارد.
در يونيكد با وجود يكيسازي كدهاي تروف مشترك، براي تروف فارسي كه بار معنايي يا نمايشي متفاوت با تروف عربي دارند، نويسههاي جداگانه درنظر گرفتهشدهاست. يعني كليه تروف خاص فارسي (پ، چ، ژ، گ) و نيز «ك» و «ي» فارسي كهبا ترف مشابهدر عربيتفاوت نمايشي دارند، مكانجداگانهاي بهخود اختصاص دادهاند. كليه اعرابهاي متداول تضور دارند و ميان شكلفارسي/اردو و عربي ارقام نيز بهعلت شكل و رفتار متفاوت، تفاوتهايي منظور گشتهاست.
از طرف ديگر، علائم نقطهگذاري چون نقطه و فاصله كهشكلي كسانيدر خطهاي لاتين و عربي دارند، كد يكسان دارند. علائميچون پرانتز نيز، بسته به جهت متن، آينهاي ميشوند، به طور مثال، نويسه 0028 نماينده «پرانتز باز» است، و نه«پرانتز سمتچپ». يونيكد اتصالمجازي و فاصله مجازي را نيز تتتنامهاي «اتصال با عرضصفر» و «بياتصالي با عرضصفر» بهرسميت ميشناسد.
بدن ترتيب ملاتظه ميشود كه براي تل مشكلات موجود، و نيز رفتن به سوي يك استاندارد مقبول و همهجانبه، استاندارد يونيكد، روشي مناسب به نظر ميرسد. در شمارههاي آتي ماهنامه نيز به اين موضوع از جنبههاي ديگر خواهيم پرداخت.
اصطلاحات
نويسه: در مقابل character. كوچكترين واتد متن. مثلاً يك ترف لاتين، يك اعراب فارسي، يكي علامت نقطهگذاري، يك نشانه بريل، يا يك نماد رياضي
شكل: در مقابل glyph. كوچكترين واتد نمايش متن. براي بعضي نويسهها مثل تروف فارسي و هندي ممكن است چند شكل موجود باشد. مثلاً « ب » و « ع » از اشكالنمايشي متسوب ميشوند
مجموعهنويسه: در مقابلcharacter set. مجموعهاي از نويسهها كهبههر نويسه عددي اختصاصميدهد كه نماينده آن نويسه متسوب ميشود و در تبادل اطلاعات مورد استفادهقرار ميگيرد
مجموعه كد: در مقابل codepage. سيستمي كه بههر نويسه دنباله مشخصياز بايتها را متناظر ميكند. مجموعهنويسهها ميتوانند بهشكل يا چند مجموعهكد قابل استفادهباشند.
لیست کامل Charset های موجود
کد پیاچپی:
Universal - utf-8
Universal - utf-16
Afrikaans - iso-8859-1
Afrikaans - windows-1252
Albanian - iso-8859-1
Albanian - windows-1252
Arabic - iso-8859-6
Arabic - windows-1256
Baltic - iso-8859-4
Basque - iso-8859-1
Basque - windows-1252
Bulgarian - iso-8859-5
Byelorussian - iso-8859-5
Catalan - iso-8859-1
Catalan - windows-1252
Celtic - iso-8859-14
Chinese Simplified - gb18030
Chinese Simplified - gb2312
Chinese Simplified - hz-gb-2312
Chinese Traditional - big5
Croatian - iso-8859-2
Croatian - windows-1250
Czech - iso-8859-2
Danish - iso-8859-1
Danish - windows-1252
Dutch - iso-8859-1
Dutch - windows-1252
English - iso-8859-1
English - windows-1252
English - us-ascii
Esperanto - iso-8859-3
Estonian - iso-8859-15
Faroese - iso-8859-1
Faroese - windows-1252
Finnish - iso-8859-1
Finnish - windows-1252
French - iso-8859-1
French - windows-1252
Galician - iso-8859-1
Galician - windows-1252
German - iso-8859-1
German - windows-1252
Greek - iso-8859-7
Greek - windows-1253
Hebrew - iso-8859-8
Hebrew - iso-8859-8-i
Hebrew - windows-1255
Hungarian - iso-8859-2
Icelandic - iso-8859-1
Icelandic - windows-1252
Inuit (Eskimo) - iso-8859-10
Irish - iso-8859-1
Irish - windows-1252
Italian - iso-8859-1
Italian - windows-1252
Japanese - shift_jis
Japanese - iso-2022-jp
Japanese - euc-jp
Korean - cp949
Korean - euc-kr
Korean - ksc_5601
Korean - KS_C_5601-1987
Korean - iso-2022-kr
Lapp - iso-8859-10
Latvian - iso-8859-13
Latvian - windows-1257
Lithuanian - iso-8859-13
Lithuanian - windows-1257
Macedonian - iso-8859-5
Macedonian - windows-1251
MacRoman - macintosh
Maltese - iso-8859-3
Norwegian - iso-8859-1
Norwegian - windows-1252
Polish - iso-8859-2
Portuguese - iso-8859-1
Portuguese - windows-1252
Romanian - iso-8859-2
Russian - koi8-r
Russian - iso-8859-5
Scottish - iso-8859-1
Scottish - windows-1252
Serbian cyrillic - windows-1251
Serbian cyrillic - iso-8859-5
Serbian latin - iso-8859-2
Serbian latin - windows-1250
Slovak - iso-8859-2
Slovenian - iso-8859-2
Slovenian - windows-1250
South-Eastern European - iso-8859-16
Spanish - iso-8859-1
Spanish - windows-1252
Swedish - iso-8859-1
Swedish - windows-1252
Taiwan - euc-tw
Taiwan - big5-eten
Taiwan - big5-hkscs
Taiwan - windows-874
Thai - tis-620
Thai - windows-874
Turkish - iso-8859-9
Turkish - windows-1254
Ukrainian - iso-8859-5
Ukrainian - koi8-u
Vietnamese - viscii
Vietnamese - windows-1258
منابع:
دانشگاه صنعتي شريف
شوراي عالي انفورماتيك
ویکی پدیا