أجهزة الكمبيوتر شبابيك إنترنت

ترميز الأحرف - PIE.Wiki. ترميز معلومات النص

Unicode هو نظام ترميز أحرف تستخدمه أجهزة الكمبيوتر لتخزين البيانات النصية وتبادلها. يحتوي Unicode على رقم فريد (أو نقطة رمز) لكل حرف في أنظمة الكتابة الرئيسية في العالم. يتضمن هذا النظام أيضًا الرموز الفنية وعلامات الترقيم والعديد من الرموز الأخرى المستخدمة في الكتابة.

بالإضافة إلى كونه خريطة شخصية ، يتضمن Unicode أيضًا خوارزميات لمطابقة وتشفير البرامج النصية ذات الوجهين مثل اللغة العربية ، بالإضافة إلى مواصفات تطبيع النماذج النصية.

يقدم هذا القسم وصفًا عامًا لـ Unicode. للمزيد من معلومات كاملةوللحصول على قائمة باللغات المدعومة التي يمكن تشفير أحرفها باستخدام Unicode ، راجع موقع Unicode Consortium على الويب.

نقاط الرمز

الرموز هي وحدات من المعلومات تتوافق تقريبًا مع وحدة نصية في الكتابة بلغة طبيعية. يحدد Unicode كيفية تفسير الأحرف بدلاً من عرضها.

صورة الحرف (الصورة الرمزية) التي يتم عرضها ، أو التمثيل المرئي للحرف ، هو حرف يظهر على شاشة العرض أو الصفحة المطبوعة. في بعض أنظمة الكتابة ، يمكن أن يتوافق حرف واحد مع العديد من الحروف الرسومية ، أو يمكن أن تتوافق الأحرف المتعددة مع حرف رسومي واحد. على سبيل المثال ، "ll" باللغة الإسبانية عبارة عن حرف رسومي واحد ، لكن حرفين: "l" و "l".

في Unicode ، يتم تحويل الأحرف إلى نقاط رمز. نقاط الرمز هي أرقام يتم تعيينها بواسطة Unicode Consortium لكل حرف في كل نظام تدوين. يتم تمثيل نقاط الرمز كـ "U +" وأربعة أرقام و / أو أحرف. فيما يلي أمثلة على نقاط التعليمات البرمجية لأربعة أحرف مختلفة: حرف صغير l ، وحرف u صغير مع umlaut ، و beta ، وحرف صغير e مع حرف حاد.

يحتوي Unicode على 1،114،112 نقطة رمز ؛ حتى الآن ، تم تعيين أكثر من 96000 حرفًا.

مستويات (طائرات)

يتم تقسيم مساحة رمز Unicode للأحرف إلى 17 مستوى ، يحتوي كل منها على 65.536 نقطة رمز.

المستوى الأول (الطائرة) -الطائرة 0- هو المستوى الأساسي متعدد اللغات (BMP). يتم ترميز معظم الأحرف الأكثر استخدامًا باستخدام BMP ، وهذه هي الطبقة التي يتم فيها تشفير معظم الأحرف اليوم. يحتوي BMP على نقاط رمز لجميع الأحرف تقريبًا في اللغات الحديثة والعديد شخصيات خاصة... هناك حوالي 6300 نقطة رمز غير مستخدمة في BMP ، والتي سيتم استخدامها لإضافة المزيد من الأحرف في المستقبل.

المستوى التالي (الطائرة) 1 هو المستوى التكميلي متعدد اللغات (SMP). يستخدم SMP لتشفير الشخصيات القديمة وكذلك الموسيقية و الرموز الرياضية.

ترميز الأحرف

يعرّف ترميز الأحرف كل حرف ونقطة رمزه وكيفية تمثيل نقطة التكويد بالبتات. بدون معرفة الترميز الذي تم استخدامه ، لن تتمكن من تفسير سلسلة الأحرف بشكل صحيح.

يوجد عدد كبير جدًا من أنظمة الترميز ، ولكن من الصعب جدًا تحويل البيانات بينها ، ويمكن للقليل منها أن يأخذ في الاعتبار وجود الأحرف في أكثر من لغتين أو ثلاث لغات مختلفة. على سبيل المثال ، إذا تم تعيين جهاز الكمبيوتر الخاص بك لاستخدام OEM-Latin II افتراضيًا وكنت تتصفح موقع ويب يستخدم IBM EBCDIC-Cyrillic ، فلن يتم تمثيل أي أحرف سيتم تمثيلها باللغة السيريلية لن يتم ترميزها في مخطط Latin II سيتم عرض هذه الأحرف وسيتم استبدالها بأحرف أخرى ، مثل علامات الاستفهام والمربعات.

نظرًا لأن Unicode يحتوي على نقاط رمز لمعظم الأحرف في الكل اللغات الحديثة، فإن استخدام ترميز أحرف Unicode سيسمح لجهاز الكمبيوتر الخاص بك بتفسير كل حرف معروف تقريبًا.

هناك ثلاثة مخططات Unicode رئيسية لتشفير الأحرف: UTF-8 و UTF-16 و UTF-32. يرمز UTF إلى تنسيق تحويل Unicode. تشير الأرقام التي تلي UTF إلى حجم الوحدات (بالبايت) المستخدمة في التشفير.

  • UTF-8يستخدم وحدة رمز ذات عرض متغير 8 بت. يستخدم UTF-8 من 1 إلى 6 بايت لترميز حرف ؛ يمكنه استخدام وحدات بايت أقل أو نفس أو أكثر من UTF-16 لترميز نفس الحرف. في windows-1251 ، يتم تخزين كل رمز من 0 إلى 127 (U + 0000 إلى U + 0127) في بايت واحد. يتم تخزين نقاط الرمز فقط 128 (U + 0128) وما فوق باستخدام 2 إلى 6 بايت.
  • UTF-16يستخدم وحدة رمز 16 بت ذات عرض ثابت. إنه مضغوط نسبيًا ويمكن تشفير جميع الأحرف الأكثر استخدامًا بوحدة رمز واحدة ذات 16 بت. يمكن الوصول إلى الأحرف الأخرى باستخدام أزواج من وحدات التعليمات البرمجية ذات 16 بت.
  • UTF-32يستغرق الأمر 4 بايت لترميز أي حرف. في معظم الحالات ، يكون حجم المستند المشفر UTF-32 ضعف حجم المستند المشفر UTF-16. يتم ترميز كل حرف في وحدة تشفير واحدة ذات عرض ثابت 32 بت. يمكنك استخدام UTF-32 إذا لم تكن لديك مساحة محدودة على القرص وتريد استخدام وحدة رمز واحدة لكل حرف.

يمكن لجميع أشكال التشفير الثلاثة تشفير نفس الأحرف ويمكن ترجمتها من واحد إلى آخر دون فقدان البيانات.

هناك أيضًا ترميزات أخرى: على سبيل المثال ، UTF-7 و UTF-EBCDIC. يوجد أيضًا GB18030 ، وهو المكافئ الصيني لـ UTF-8 ويدعم الأحرف الصينية التقليدية والمبسطة. بالنسبة للغة الروسية ، من الملائم استخدام Windows-1251.

حقوق النشر © 1995-2014 Esri. كل الحقوق محفوظة.

Unicode هو عالم كبير ومعقد للغاية ، لأن المعيار يسمح لك بتمثيل والعمل في جهاز كمبيوتر مع جميع البرامج النصية الرئيسية في العالم. كانت بعض أنظمة الكتابة موجودة منذ أكثر من ألف عام ، وقد تطور العديد منها بشكل مستقل تقريبًا عن بعضها البعض في أجزاء مختلفة من العالم. اخترع الناس أشياء كثيرة وهم غالبًا ما يكونون مختلفين عن بعضهم البعض لدرجة أنه كان من الصعب للغاية والطموح دمج كل هذا في معيار واحد.

لفهم Unicode حقًا ، يجب أن تتخيل بشكل سطحي على الأقل ميزات جميع البرامج النصية التي يسمح لك المعيار بالعمل معها. لكن هل هو ضروري حقًا لكل مطور؟ سنقول لا. لاستخدام Unicode في معظم المهام اليومية ، يكفي معرفة حد أدنى معقول من المعلومات ، ثم الخوض في المعيار حسب الحاجة.

في هذه المقالة ، سنتحدث عن المبادئ الأساسية لـ Unicode ونسلط الضوء على تلك القضايا العملية المهمة التي سيواجهها المطورون بالتأكيد في عملهم اليومي.

لماذا تحتاج Unicode؟

قبل ظهور Unicode ، كانت الترميزات أحادية البايت تُستخدم عالميًا تقريبًا ، حيث كانت الحدود بين الشخصيات نفسها ، وتمثيلها في ذاكرة الكمبيوتر وعرضها على الشاشة تعسفيًا إلى حد ما. إذا كنت تعمل مع لغة وطنية واحدة أو أخرى ، فقد تم تثبيت ترميزات الخطوط المقابلة على نظامك ، مما جعل من الممكن سحب وحدات البايت من القرص على الشاشة بطريقة تجعلها منطقية للمستخدم.

إذا قمت بطباعة ملف نصي على الطابعة ورأيت مجموعة من krakozyabras غير المفهومة على الصفحة الورقية ، فهذا يعني أنه لم يتم تحميل الخطوط المقابلة في جهاز الطباعة ولم يتم تفسير البايت بالطريقة التي تريدها.

كان لهذا النهج بشكل عام والتشفير أحادي البايت على وجه الخصوص عدد من العيوب المهمة:

  1. كان من الممكن العمل في وقت واحد باستخدام 256 حرفًا فقط ، وكان أول 128 حرفًا محجوزًا للغة اللاتينية وأحرف التحكم ، وفي النصف الثاني ، بالإضافة إلى أحرف الأبجدية الوطنية ، كان من الضروري العثور على مكان للرسم الزائف الشخصيات (╔ ╗).
  2. تم ربط الخطوط بترميز معين.
  3. يمثل كل ترميز مجموعته الخاصة من الأحرف وكان التحويل من واحد إلى آخر ممكنًا فقط مع خسائر جزئية ، عندما تم استبدال الأحرف المفقودة بأحرف متشابهة بيانياً.
  4. كان نقل الملفات بين الأجهزة التي تعمل بأنظمة تشغيل مختلفة أمرًا صعبًا. كان من الضروري إما أن يكون لديك برنامج محول ، أو حمل خطوط إضافية مع الملف. كان وجود الإنترنت بالشكل الذي نعرفه مستحيلاً.
  5. هناك أنظمة كتابة غير أبجدية في العالم (الكتابة الهيروغليفية) ، والتي لا يمكن تمثيلها من حيث المبدأ في ترميز أحادي البايت.

المبادئ الأساسية لليونيكود

نحن جميعًا نفهم جيدًا أن الكمبيوتر لا يعرف أي كيانات مثالية ، ولكنه يعمل بالبتات والبايتات. لكن أنظمة الكمبيوتر لا تزال تُصنع من قبل الناس ، وليس الآلات ، وفي بعض الأحيان يكون من الأنسب لك ولي العمل بمفاهيم تأملية ، ثم الانتقال من المجرد إلى الملموس.

الأهمية!أحد المبادئ الأساسية في فلسفة Unicode هو التمييز الواضح بين الأحرف ، وتمثيلها في الكمبيوتر ، وعرضها على جهاز الإخراج.

تم تقديم مفهوم حرف unicode المجرد ، والذي يوجد حصريًا في شكل مفهوم تأملي واتفاق بين الناس ، منصوص عليه في المعيار. يرتبط كل حرف Unicode بعدد صحيح غير سالب يسمى نقطة الرمز الخاص به.

لذلك ، على سبيل المثال ، الحرف الموحد U + 041F هو حرف سيريلي كبير P. هناك عدة طرق لتمثيل هذا الحرف في ذاكرة الكمبيوتر ، تمامًا مثل عدة آلاف من الطرق لعرضه على شاشة العرض. ولكن في نفس الوقت ستكون P أو P أو U + 041F في إفريقيا.

هذا هو التغليف المألوف ، أو فصل الواجهة عن التنفيذ ، وهو مفهوم نجح في البرمجة.

اتضح أنه ، من خلال الاسترشاد بالمعيار ، يمكن ترميز أي نص على شكل سلسلة من أحرف unicode

مرحبًا U + 041F U + 0440 U + 0438 U + 0432 U + 0435 U + 0442
اكتبها على قطعة من الورق ، ضعها في مظروف وأرسلها إلى أي مكان في العالم. إذا علموا بوجود Unicode ، فسيتم فهم النص من قبلهم تمامًا بنفس الطريقة التي يدركها أنا وأنت. لن يكون لديهم أدنى شك في أن الشخصية قبل الأخيرة هي بالضبط الأحرف السيريلية الصغيرة ه(U + 0435) لا أقول لاتينية صغيرة ه(U + 0065). لاحظ أننا لم نقل كلمة واحدة عن تمثيل البايت.

على الرغم من تسمية أحرف unicode بالرموز ، إلا أنها لا تتوافق دائمًا مع حرف بالمعنى التقليدي الساذج ، مثل حرف أو رقم أو علامة ترقيم أو هيروغليفية. (انظر أسفل المفسد لمزيد من التفاصيل.)

أمثلة على رموز يونيكود المختلفة

هناك أحرف يونيكود تقنية بحتة ، على سبيل المثال:

  • U + 0000: حرف فارغ ؛
  • U + D800 - U + DFFF: بدائل ثانوية وكبيرة للتمثيل الفني لنقاط الرمز في النطاق 10000 إلى 10FFFF (اقرأ: خارج BMP / BMP) في عائلة تشفير UTF-16 ؛
  • إلخ.
توجد علامات ترقيم ، مثل U + 200F: علامة لتغيير اتجاه الكتابة من اليمين إلى اليسار.

هناك مجموعة كاملة من المساحات ذات العروض والأغراض المختلفة (انظر مقالة habr الممتازة :):

  • U + 0020 (مسافة) ؛
  • U + 00A0 (مسافة غير قابلة للكسر ، بتنسيق HTML) ؛
  • U + 2002 (فضاء نصف دائري أو En Space) ؛
  • U + 2003 (فضاء دائري أو مسافة Em) ؛
  • إلخ.
هناك دمج بين علامات التشكيل - جميع أنواع الخطوط ، والنقاط ، والتيلدا ، وما إلى ذلك ، والتي تغير / توضح معنى العلامة السابقة ومخططها العام. على سبيل المثال:
  • U + 0300 و U + 0301: علامات الإجهاد الأولي (الحاد) والثانوي (الضعيف) ؛
  • U + 0306: قصير (مرتفع) ، كما في th ؛
  • U + 0303: تيلدا مرتفع
  • إلخ.
حتى أن هناك علامات غريبة مثل علامات اللغة (U + E0001 و U + E0020 - U + E007E و U + E007F) ، والتي أصبحت الآن في طي النسيان. تم تصورها على أنها القدرة على تمييز أقسام معينة من النص على أنها تنتمي إلى متغير لغة معين (على سبيل المثال ، الإنجليزية الأمريكية والبريطانية) ، مما قد يؤثر على تفاصيل كيفية عرض النص.

ما هو الرمز ، ما هو الفرق بين مجموعة حروف الحروف (اقرأ: يُنظر إليها على أنها صورة واحدة كاملة لرمز) من رمز يونيكود ومن كود كم ، سنخبرك في المرة القادمة.

مساحة رمز Unicode

تتكون مساحة رمز Unicode من 111112 نقطة رمز ، تتراوح من 0 إلى 10FFFF. من بين هؤلاء ، تم تخصيص 128.237 فقط قيمًا للإصدار التاسع من المعيار.جزء من المساحة محجوز للاستخدام الخاص ويتعهد اتحاد Unicode بعدم تعيين قيم لمواقع من هذه المناطق الخاصة أبدًا.

من أجل الراحة ، تم تقسيم المساحة بأكملها إلى 17 طائرة (الآن ستة منها متضمنة). حتى وقت قريب ، كان من المعتاد القول أنه على الأرجح سيكون عليك فقط مواجهة المستوى الأساسي متعدد اللغات (BMP) ، والذي يتضمن أحرف Unicode من U + 0000 إلى U + FFFF. (بالنظر إلى الأمام قليلاً: يتم تمثيل أحرف BMP في UTF-16 في وحدتي بايت ، وليس أربعة). في عام 2016 ، هذه الأطروحة موضع شك بالفعل. لذلك ، على سبيل المثال ، قد يتم العثور على أحرف Emoji الشائعة في رسالة المستخدم وتحتاج إلى أن تكون قادرًا على معالجتها بشكل صحيح.

ترميزات

إذا أردنا إرسال نص عبر الإنترنت ، فنحن بحاجة إلى تشفير سلسلة من أحرف unicode كسلسلة من البايت.

يتضمن معيار Unicode عددًا من ترميزات Unicode ، مثل UTF-8 و UTF-16BE / UTF-16LE ، والتي تتيح تشفير مساحة نقطة الرمز بالكامل. يمكن إجراء التحويل بين هذه الترميزات بحرية دون فقدان المعلومات.

أيضًا ، لم يقم أي شخص بإلغاء الترميزات أحادية البايت ، لكنها تسمح لك بتشفير قطعة فردية وضيقة جدًا من طيف Unicode - 256 نقطة أو أقل. لمثل هذه الترميزات ، توجد جداول ومتاحة للجميع ، حيث ترتبط كل قيمة بايت واحد بحرف يونيكود (انظر ، على سبيل المثال ، CP1251.TXT). على الرغم من القيود ، فإن الترميزات أحادية البايت تصبح عملية للغاية عندما يتعلق الأمر بالعمل مع مجموعة كبيرة من اللغات أحادية اللغة معلومات نصية.

UTF-8 هو ترميز Unicode الأكثر استخدامًا على الإنترنت (فاز في عام 2008) ، ويرجع ذلك أساسًا إلى الاقتصاد والتوافق الشفاف مع ASCII ذي السبعة بتات. الأحرف اللاتينية والخدمية وعلامات الترقيم الأساسية والأرقام - أي يتم تشفير جميع أحرف ASCII المكونة من سبع بتات في UTF-8 في بايت واحد ، كما هو الحال في ASCII. يتم تمثيل أحرف العديد من النصوص الرئيسية ، باستثناء بعض الأحرف الهيروغليفية النادرة ، بمقدار اثنين أو ثلاثة بايت. يتم ترميز أكبر نقطة رمز محددة بواسطة المعيار ، 10FFFF ، بأربعة بايت.

لاحظ أن UTF-8 هو ترميز متغير الطول. يتم تمثيل كل حرف Unicode فيه من خلال سلسلة من الكوانتات البرمجية بطول لا يقل عن كم واحد. الرقم 8 يعني طول البت لوحدة الشفرة - 8 بتات. بالنسبة لعائلة الترميز UTF-16 ، يكون حجم الكود الكمي ، على التوالي ، 16 بت. بالنسبة إلى UTF-32 - 32 بت.

إذا كنت ترسل صفحة HTML بها نص سيريلي عبر الشبكة ، فيمكن أن يوفر UTF-8 فائدة ملموسة جدًا ، لأن سيتم تشفير جميع كتل الترميز وكذلك JavaScript و CSS بكفاءة في بايت واحد. على سبيل المثال الصفحة الرئيسيةيبلغ حجم Habra في UTF-8 139 كيلوبايت ، وفي UTF-16 يبلغ حجمه بالفعل 256 كيلوبايت. للمقارنة ، إذا كنت تستخدم win-1251 مع فقدان القدرة على تخزين بعض الأحرف ، فسيتم تقليل الحجم ، مقارنة بـ UTF-8 ، بمقدار 11 كيلو بايت فقط إلى 128 كيلو بايت.

لتخزين معلومات السلسلة في التطبيقات ، غالبًا ما تُستخدم ترميزات يونيكود 16 بت نظرًا لبساطتها ، فضلاً عن حقيقة أن رموز أنظمة الكتابة الرئيسية في العالم مشفرة في كم واحد من ستة عشر بتًا. لذلك ، على سبيل المثال ، تستخدم Java بنجاح UTF-16 للتمثيل الداخلي للسلاسل. يستخدم نظام التشغيل Windows أيضًا UTF-16 داخليًا.

على أي حال ، طالما بقينا في مساحة Unicode ، فلا يهم حقًا كيف يتم تخزين معلومات السلسلة داخل تطبيق واحد. إذا كان تنسيق التخزين الداخلي يسمح لك بتشفير أكثر من مليون نقطة رمز بشكل صحيح ولا يوجد فقدان للمعلومات عند حدود التطبيق ، على سبيل المثال ، عند القراءة من ملف أو النسخ إلى الحافظة ، فكل شيء على ما يرام.

للحصول على تفسير صحيح للنص المقروء من القرص أو من مقبس الشبكة ، يجب عليك أولاً تحديد الترميز الخاص به. يتم ذلك إما باستخدام المعلومات الوصفية التي يوفرها المستخدم والمكتوبة في النص أو بالقرب منه ، أو يتم تحديده بشكل استكشافي.

في المخلفات الجافة

هناك الكثير من المعلومات ومن المنطقي تقديم ملخص موجز لكل ما كتب أعلاه:
  • يفترض Unicode تمييزًا واضحًا بين الأحرف ، وتمثيلها في الكمبيوتر ، وعرضها على جهاز الإخراج.
  • لا تتوافق أحرف Unicode دائمًا مع حرف بالمعنى التقليدي السذج ، مثل حرف أو رقم أو علامة ترقيم أو هيروغليفية.
  • تتكون مساحة رمز Unicode من 111112 نقطة رمز ، تتراوح من 0 إلى 10FFFF.
  • يتضمن المستوى الأساسي متعدد اللغات أحرف Unicode من U + 0000 إلى U + FFFF ، والتي تم ترميزها في UTF-16 في وحدتي بايت.
  • يسمح لك أي ترميز Unicode بتشفير المساحة الكاملة لنقاط رمز Unicode ويتم التحويل بين هذه الترميزات المختلفة دون فقدان المعلومات.
  • يمكن أن تشفر الترميزات أحادية البايت جزءًا صغيرًا فقط من طيف الترميز الموحد ، ولكن يمكن أن تكون مفيدة عند التعامل مع كمية كبيرة من المعلومات أحادية اللغة.
  • ترميزات UTF-8 و UTF-16 لها أطوال كود متغيرة. في UTF-8 ، يمكن تشفير كل حرف Unicode بواحد أو اثنين أو ثلاثة أو أربعة بايت. في UTF-16 ، اثنان أو أربعة بايت.
  • يمكن أن يكون التنسيق الداخلي لتخزين المعلومات النصية داخل تطبيق منفصل تعسفيًا ، بشرط أن يعمل بشكل صحيح مع المساحة الكاملة لنقاط رمز Unicode وألا يكون هناك خسارة في نقل البيانات عبر الحدود.

ملاحظة سريعة حول الترميز

يمكن أن يحدث بعض الالتباس مع مصطلح الترميز. في Unicode ، يحدث الترميز مرتين. في المرة الأولى التي يتم فيها ترميز مجموعة أحرف ، بمعنى أنه يتم تعيين نقطة رمز مقابلة لكل حرف Unicode. تقوم هذه العملية بتحويل مجموعة أحرف Unicode إلى مجموعة أحرف مشفرة. في المرة الثانية التي يتم فيها تحويل سلسلة من أحرف unicode إلى سلسلة بايت ، تسمى هذه العملية أيضًا التشفير.

في المصطلحات الإنجليزية ، هناك نوعان من الأفعال المختلفة للتشفير والتشفير ، ولكن غالبًا ما يتم الخلط بين المتحدثين الأصليين بشأنهما. بالإضافة إلى ذلك ، يتم استخدام مصطلح مجموعة الأحرف أو مجموعة الأحرف بشكل مترادف مع مصطلح مجموعة الأحرف المشفرة.

كل هذا نقوله لحقيقة أنه من المنطقي الانتباه إلى السياق وتمييز المواقف عندما يتعلق الأمر بموضع الكود الخاص بحرف يونيكود مجرد وعندما يتعلق الأمر بتمثيل البايت الخاص به.

أخيرا

هناك العديد من الجوانب المختلفة لـ Unicode لدرجة أنه من المستحيل تغطية كل شيء في مقال واحد. وغير ضروري. المعلومات الواردة أعلاه كافية لتجنب الالتباس في المبادئ الأساسية والعمل مع النص في معظم المهام اليومية (اقرأ: دون تجاوز BMP). سنتحدث في المقالات التالية عن التطبيع ، ونقدم نظرة عامة تاريخية أكثر اكتمالاً لتطوير الترميزات ، ونتحدث عن مشاكل مصطلحات Unicode باللغة الروسية ، وأيضًا سنقوم بعمل مادة حول الجوانب العملية لاستخدام UTF-8 و UTF-16 .

يونيكود

شعار Unicode Consortium

يونيكود(في أغلب الأحيان) أو يونيكود(م. يونيكود) هو معيار لترميز الأحرف يسمح بتمثيل الأحرف في جميع اللغات المكتوبة تقريبًا.

تم اقتراح المعيار في عام 1991 من قبل المنظمة غير الربحية "Unicode Consortium" (eng. اتحاد يونيكود ، يونيكود إنك.).

يتيح استخدام هذا المعيار إمكانية ترميز عدد كبير جدًا من الأحرف من نصوص مختلفة: الأحرف الصينية ، والأحرف الرياضية ، وحروف الأبجدية اليونانية ، والأبجدية اللاتينية والسيريلية يمكن أن تتعايش في مستندات Unicode ، وبالتالي يصبح تبديل صفحات الرموز غير ضروري.

يتكون المعيار من قسمين رئيسيين: مجموعة الأحرف العالمية (eng. UCS ، مجموعة أحرف عالمية) وعائلة الترميزات (م. UTF ، تنسيق تحويل Unicode).

تحدد مجموعة الأحرف العالمية تطابق الأحرف مع الرموز - عناصر مساحة الرمز التي تمثل أعدادًا صحيحة غير سالبة. تحدد عائلة الترميزات تمثيل الجهاز لسلسلة من أكواد UCS.

رموز Unicode مقسمة إلى عدة مناطق. تحتوي المنطقة ذات الرموز من U + 0000 إلى U + 007F على أحرف ASCII مع الرموز المقابلة. فيما يلي مناطق علامات النصوص المختلفة وعلامات الترقيم والرموز الفنية.

بعض الرموز محجوزة للاستخدام في المستقبل. ضمن مناطق الأحرف السيريلية ، يتم تخصيص مناطق الأحرف ذات الرموز من U + 0400 إلى U + 052F ، من U + 2DE0 إلى U + 2DFF ، من U + A640 إلى U + A69F (انظر السيريلية في Unicode).

  • 1 المتطلبات الأساسية لإنشاء وتطوير Unicode
  • 2 إصدارات Unicode
  • 3 مساحة التعليمات البرمجية
  • 4 نظام الترميز
    • 4.1 سياسة الاتحاد
    • 4.2 الجمع بين الرموز ونسخها
  • 5 تعديل الحروف
  • 6 خوارزميات التطبيع
    • 6.1 NFD
    • 6.2 NFC
    • 6.3 NFKD
    • 6.4 نفك
    • 6.5 أمثلة
  • 7 الكتابة ثنائية الاتجاه
  • 8 رموز مميزة
  • 9 ISO / IEC 10646
  • 10 طرق للعرض
    • 10.1 UTF-8
    • 10.2 ترتيب البايت
    • 10.3 ترميزات يونيكود والتقليدية
    • 10.4 عمليات التنفيذ
  • 11 طرق الإدخال
  • 12 مشاكل يونيكود
  • 13 "Unicode" أم "Unicode"؟

المتطلبات الأساسية لإنشاء وتطوير Unicode

بحلول أواخر الثمانينيات ، أصبحت الأحرف 8 بت هي المعيار. في الوقت نفسه ، كان هناك العديد من ترميزات 8 بت المختلفة ، وظهرت باستمرار ترميزات جديدة.

تم تفسير ذلك من خلال التوسع المستمر في نطاق اللغات المدعومة ، والرغبة في إنشاء ترميز متوافق جزئيًا مع بعض اللغات الأخرى (مثال نموذجي هو ظهور ترميز بديل للغة الروسية ، بسبب استغلال اللغة الغربية. البرامج التي تم إنشاؤها لترميز CP437).

ونتيجة لذلك ظهرت عدة مشاكل:

  1. مشكلة "krakozyabr" ؛
  2. مشكلة مجموعة الأحرف المحدودة ؛
  3. مشكلة تحويل ترميز إلى آخر ؛
  4. مشكلة الخطوط المكررة.

مشكلة "krakozyabr"- مشكلة عرض المستندات بترميز خاطئ. يمكن حل المشكلة إما عن طريق تقديم طرق لتحديد الترميز المستخدم باستمرار ، أو عن طريق إدخال ترميز واحد (مشترك) للجميع.

مشكلة مجموعة الأحرف المحدودة... يمكن حل المشكلة إما عن طريق تبديل الخطوط داخل المستند ، أو عن طريق إدخال ترميز "واسع". لطالما تم ممارسة تبديل الخطوط في معالجات الكلمات ، وغالبًا ما يتم استخدام الخطوط ذات الترميز غير القياسي ، ما يسمى بـ. "خطوط Dingbat". نتيجة لذلك ، عند محاولة نقل مستند إلى نظام آخر ، تحولت جميع الأحرف غير القياسية إلى "krakozyabry".

مشكلة تحويل ترميز لآخر... يمكن حل المشكلة إما عن طريق تجميع جداول التحويل لكل زوج من الترميزات ، أو باستخدام تحويل وسيط إلى ترميز ثالث يتضمن جميع أحرف جميع الترميزات.

مشكلة الخطوط المكررة... لكل ترميز ، تم إنشاء خط خاص به ، حتى إذا تزامنت مجموعات الأحرف في الترميزات جزئيًا أو كليًا. يمكن حل المشكلة عن طريق إنشاء خطوط "كبيرة" ، يتم من خلالها تحديد الأحرف اللازمة لترميز معين لاحقًا. ومع ذلك ، فقد تطلب ذلك إنشاء سجل واحد للرموز لتحديد ما يتوافق مع ماذا.

تم الاعتراف بالحاجة إلى ترميز واحد "واسع". تم العثور على ترميزات متغيرة الطول ، المستخدمة على نطاق واسع في شرق آسيا ، لتكون صعبة الاستخدام للغاية ، لذلك تقرر استخدام أحرف ذات عرض ثابت.

يبدو أن استخدام أحرف 32 بت مضيعة للغاية ، لذلك تقرر استخدام أحرف 16 بت.

كان الإصدار الأول من Unicode عبارة عن ترميز بحجم حرف ثابت يبلغ 16 بت ، أي أن العدد الإجمالي للرموز كان 2 16 (65536). منذ ذلك الحين ، تم الإشارة إلى الرموز بأربعة أرقام سداسية عشرية (على سبيل المثال ، يو + 04F0). في الوقت نفسه ، تم التخطيط لترميز في Unicode ليس كل الأحرف الموجودة ، ولكن فقط تلك الضرورية في الحياة اليومية. نادرًا ما كان يجب وضع الرموز المستخدمة في "منطقة الاستخدام الخاص" التي احتلت الرموز في الأصل U + D800 ... U + F8FF.

من أجل استخدام Unicode أيضًا كوسيط في تحويل الترميزات المختلفة لبعضها البعض ، تم تضمين جميع الأحرف الممثلة في جميع الترميزات الأكثر شهرة فيه.

ومع ذلك ، فقد تقرر في المستقبل ترميز جميع الرموز ، وفيما يتعلق بذلك ، توسيع مجال الكود بشكل كبير.

في الوقت نفسه ، بدأ اعتبار رموز الأحرف ليست قيمًا ذات 16 بت ، ولكن كأرقام مجردة يمكن تمثيلها في الكمبيوتر بعدة طرق مختلفة (انظر طرق التمثيل).

نظرًا لأنه في عدد من أنظمة الكمبيوتر (على سبيل المثال ، Windows NT) تم استخدام الأحرف 16 بت الثابتة بالفعل كتشفير افتراضي ، فقد تقرر ترميز جميع الأحرف الأكثر أهمية فقط ضمن أول 65.536 موضعًا (ما يسمى باللغة الإنجليزية. طائرة أساسية متعددة اللغات ، BMP).

يتم استخدام المساحة المتبقية لـ "أحرف إضافية" (eng. الشخصيات التكميلية): أنظمة كتابة اللغات المنقرضة أو الأحرف الصينية النادرة جدًا والرموز الرياضية والموسيقية.

للتوافق مع أنظمة 16 بت القديمة ، تم اختراع نظام UTF-16 ، حيث يتم عرض أول 65.536 موضعًا ، باستثناء المواضع من الفاصل الزمني U + D800 ... U + DFFF ، مباشرة كأرقام 16 بت ، ويتم تمثيل الباقي على أنهم "أزواج بديلة" (العنصر الأول للزوج من منطقة U + D800… U + DBFF ، والعنصر الثاني للزوج من منطقة U + DC00… U + DFFF). بالنسبة للأزواج البديل ، تم استخدام جزء من مساحة الشفرة (2048 وظيفة) المخصصة "للاستخدام الخاص".

نظرًا لأن UTF-16 يمكنه عرض 2 20 + 2 16 −2048 (111064) حرفًا فقط ، فقد تم اختيار هذا الرقم كقيمة نهائية لمساحة رمز Unicode (نطاق الرمز: 0x000000-0x10FFFF).

على الرغم من أن منطقة رمز Unicode قد تم تمديدها إلى ما بعد 2-16 في وقت مبكر من الإصدار 2.0 ، إلا أن الأحرف الأولى في منطقة "الجزء العلوي" تم وضعها فقط في الإصدار 3.1.

دور هذا الترميز في قطاع الويب يتزايد باستمرار. في بداية عام 2010 ، بلغت نسبة مواقع الويب التي تستخدم Unicode حوالي 50٪.

إصدارات يونيكود

يستمر العمل على وضع اللمسات الأخيرة على المعيار. يتم إصدار إصدارات جديدة مع تغير جداول الرموز وتحديثها. بالتوازي مع ذلك ، يتم إصدار وثائق ISO / IEC 10646 جديدة.

تم إصدار المعيار الأول في عام 1991 ، وآخرها في عام 2016 ، ومن المتوقع أن يتم إصدار المعيار التالي في صيف عام 2017. تم نشر إصدارات المعايير 1.0-5.0 في شكل كتب ولها رقم ISBN.

يتكون رقم إصدار المعيار من ثلاثة أرقام (على سبيل المثال ، "4.0.1"). يتم تغيير الرقم الثالث عند إجراء تغييرات طفيفة على المعيار الذي لا يضيف أحرفًا جديدة.

مساحة الرمز

على الرغم من أن نماذج الترميز UTF-8 و UTF-32 تسمح بترميز ما يصل إلى 2،331 (2،147،483،648) نقطة رمز ، فقد تقرر استخدام 1،112،064 فقط للتوافق مع UTF-16. ومع ذلك ، حتى هذا أكثر من كافٍ في الوقت الحالي - في الإصدار 6.0 يتم استخدام أقل بقليل من 110.000 نقطة رمز (109242 رسمًا و 273 رمزًا آخر).

يتم تقسيم مساحة الرمز إلى 17 طائرات(م. طائرات) 2 16 (65536) حرفًا لكل منهما. طائرة ارضية ( الطائرة 0) يسمى أساسي (أساسي) ويحتوي على رموز النصوص الأكثر شيوعًا. بقية الطائرات إضافية ( تكميلي). الطائرة الأولى ( الطائرة 1) يستخدم بشكل أساسي للنصوص التاريخية ، والثاني ( الطائرة 2) - للأحرف الصينية النادرة الاستخدام (CJK) ، الثالث ( الطائرة 3) محجوز للأحرف الصينية القديمة. الطائرتان 15 و 16 محجوزتان للاستخدام الخاص.

للإشارة إلى أحرف Unicode ، استخدم تدوينًا مثل "U + xxxx"(للرموز 0 ... FFFF) ، أو" U + كسكسكسكسكس"(للرموز 10000 ... FFFFF) ، أو" U + xxxxxx"(بالنسبة للرموز 100000 ... 10FFFF) ، أين xxx- أرقام سداسية عشرية. على سبيل المثال ، الحرف "i" (U + 044F) له الرمز 044F 16 = 1103 10.

نظام الترميز

نظام الترميز العالمي (Unicode) عبارة عن مجموعة من الرموز الرسومية وطريقة لتشفيرها لمعالجة البيانات النصية بالكمبيوتر.

الرموز الرسومية هي رموز لها صورة مرئية. تعارض الأحرف الرسومية التحكم في الأحرف وتنسيقها.

تشمل الرموز الرسومية المجموعات التالية:

  • الحروف الواردة في واحدة على الأقل من الحروف الهجائية المدعومة ؛
  • أعداد؛
  • علامات الترقيم؛
  • علامات خاصة (رياضية ، تقنية ، إيديوغرام ، إلخ) ؛
  • فواصل.

Unicode هو نظام للتمثيل الخطي للنص. يمكن تمثيل الأحرف ذات النصوص المرتفعة أو المنخفضة كسلسلة من الرموز المبنية وفقًا لقواعد معينة (حرف مركب) أو كحرف واحد (نسخة متجانسة ، حرف مركب مسبقًا). تشغيل هذه اللحظة(2014) ، يُعتقد أن جميع أحرف النصوص الكبيرة مدرجة في Unicode ، وإذا كان الرمز متاحًا في إصدار مركب ، فليس من الضروري تكراره في شكل موحد.

سياسة الاتحاد

لا ينشئ الكونسورتيوم اتحادًا جديدًا ، لكنه ينص على الترتيب الثابت للأشياء. على سبيل المثال ، تمت إضافة صور الرموز التعبيرية لأن مشغلي الهواتف المحمولة اليابانيين استخدموها على نطاق واسع.

للقيام بذلك ، تمر عملية إضافة الرمز بعملية معقدة. وعلى سبيل المثال ، فقد تجاوزه رمز الروبل الروسي في ثلاثة أشهر لمجرد أنه حصل على وضع رسمي.

العلامات التجارية مشفرة فقط عن طريق الاستثناء. لذلك ، في Unicode لا يوجد علم Windows أو Apple apple.

بمجرد ظهور شخصية في الترميز ، فإنها لن تتحرك أو تختفي أبدًا. إذا كنت بحاجة إلى تغيير ترتيب الأحرف ، فلن يتم ذلك عن طريق تغيير المواضع ، ولكن من خلال ترتيب الفرز الوطني. هناك ضمانات أخرى أكثر دقة للاستقرار - على سبيل المثال ، لن تتغير جداول التسوية.

الجمع بين الرموز ونسخها

يمكن أن يتخذ نفس الرمز عدة أشكال ؛ في Unicode ، يتم تضمين هذه النماذج في نقطة رمز واحدة:

  • إذا حدث ذلك تاريخيًا. على سبيل المثال ، الحروف العربية لها أربعة أشكال: منفصلة ، في البداية ، في المنتصف وفي النهاية ؛
  • أو إذا تم تبني لغة ما في شكل ، وفي شكل آخر - أخرى. يختلف السيريلية البلغارية عن الأحرف الروسية والصينية عن اليابانية.

من ناحية أخرى ، إذا كانت هناك تاريخيًا نقطتا رمز مختلفتان في الخطوط ، فإنها تظل مختلفة في Unicode. يتكون سيجما اليوناني الصغير من شكلين ، ولهما موقعان مختلفان. الحرف اللاتيني الممتد Å (أ مع دائرة) وعلامة أنجستروم Å ، رسالة يونانيةμ والبادئة "micro" µ هما رمزان مختلفان.

بالطبع ، يتم وضع أحرف متشابهة في البرامج النصية غير ذات الصلة في نقاط رمز مختلفة. على سبيل المثال ، الحرف "أ" باللغات اللاتينية والسيريلية واليونانية والشيروكي هي رموز مختلفة.

من النادر جدًا وضع نفس الحرف في موضعين مختلفين من الرموز لتبسيط معالجة النص. الضربات الرياضية ونفس الضربات الدالة على نعومة الأصوات هما رمزان مختلفان ، والثاني يعتبر حرفًا.

تعديل الشخصيات

تمثيل الحرف "Y" (U + 0419) في شكل الحرف الأساسي "I" (U + 0418) والحرف المعدل "" (U + 0306)

تنقسم الأحرف الرسومية في Unicode إلى موسعة وغير ممتدة (عديمة العرض). لا تشغل الأحرف غير الممتدة مساحة في السطر عند عرضها. وتشمل هذه ، على وجه الخصوص ، علامات التشكيل وعلامات التشكيل الأخرى. كل من الأحرف الموسعة وغير الموسعة لها رموز خاصة بها. تسمى الرموز الممتدة بطريقة أخرى أساسية (eng. الشخصيات الأساسية) ، وغير الموسعة - تعديل (م. الجمع بين الشخصيات) ؛ والأخير لا يمكن أن يجتمع بشكل مستقل. على سبيل المثال ، يمكن تمثيل الحرف "á" كسلسلة من الحرف الأساسي "a" (U + 0061) وحرف المعدل "́" (U + 0301) ، أو كحرف متآلف "á" (U + 00E1).

نوع خاص من تعديل الأحرف هو محددات نمط الوجه (eng. محددات الاختلاف). تنطبق فقط على تلك الرموز التي تم تعريف هذه المتغيرات من أجلها. في الإصدار 5.0 ، تم تحديد الأوزان لعدد من الرموز الرياضية ، ورموز الأبجدية المنغولية التقليدية ، ولرموز النص المنغولي المربع.

خوارزميات التطبيع

حيث يمكن تمثيل نفس الرموز رموز مختلفة، يصبح من المستحيل مقارنة سلاسل بايت بالبايت. خوارزميات التطبيع أشكال التطبيع) حل هذه المشكلة عن طريق تحويل النص إلى شكل قياسي معين.

يتم إجراء الصب عن طريق استبدال الرموز بأخرى مكافئة باستخدام الجداول والقواعد. "التحلل" هو استبدال (تحلل) حرف واحد إلى عدة أحرف مكونة ، و "التركيب" ، على العكس من ذلك ، هو استبدال (اتصال) عدة أحرف مكونة بحرف واحد.

يحدد معيار Unicode 4 خوارزميات تطبيع النص: NFD و NFC و NFKD و NFKC.

NFD

NFD ، م. ن ormalization Fأورم د ("D" من اللغة الإنجليزية. دالتصدع) ، نموذج التطبيع D هو التحلل الكنسي - خوارزمية يتم بموجبها إجراء الاستبدال المتكرر للرموز المتجانسة (eng. أحرف مسبقة التكوين) في عدة مكونات (هندسة. شخصيات مركبة) حسب جداول التحلل.

Å
U + 00C5
أ
U + 0041
̊
يو + 030 أ
ش + 1E69
س
U + 0073
̣
U + 0323
̇
U + 0307
ḍ̇
يو + 1E0B U + 0323
د
U + 0064
̣
U + 0323
̇
U + 0307
q̣̇
U + 0071 U + 0307 U + 0323
ف
U + 0071
̣
U + 0323
̇
U + 0307

NFC

NFC ، م. ن ormalization Fأورم ج ("C" من اللغة الإنجليزية. جإغفال) ، نموذج التطبيع C عبارة عن خوارزمية يتم وفقًا لها إجراء التحلل القانوني والتكوين الكنسي بالتتابع. أولاً ، يؤدي التحليل الكنسي (خوارزمية NFD) إلى تقليل النص إلى النموذج D. ثم يقوم التكوين الكنسي ، وهو معكوس NFD ، بمعالجة النص من البداية إلى النهاية ، مع مراعاة القواعد التالية:

  • رمز سالعد مبدئيإذا كانت تحتوي على فئة تعديل تساوي الصفر وفقًا لجدول أحرف Unicode ؛
  • في أي تسلسل أحرف يبدأ بالحرف س، رمز جمنعت من س، فقط إذا كان بينهما سو جهل هناك أي رمز بالتي هي إما أولية أو لها نفس فئة التعديل أو أكبر من ج... تنطبق هذه القاعدة فقط على السلاسل التي مرت بالتحلل الكنسي ؛
  • رمز مهم الأوليةمركب إذا كان يحتوي على تحلل متعارف عليه في جدول أحرف Unicode (أو تحلل متعارف عليه لـ Hangul ولم يتم تضمينه في قائمة الاستبعاد) ؛
  • رمز Xيمكن دمجه مع الرمز أولاً صإذا وفقط إذا كان هناك مركب أساسي ض، مكافئًا قانونيًا للتسلسل<X, ص>;
  • إذا كان الحرف التالي جلم يتم حظره بواسطة آخر حرف أساسي للبدء الذي تمت مواجهته إلويمكن دمجه بنجاح أولاً ، ثم إليحل محله مركب LC، أ جإزالة.
ا
U + 006F
̂
U + 0302
ح
U + 0048
U + 2460
1
U + 0031
U + FF76
U + 30AB
U + FB01
U + FB01
F أنا
U + 0066 U + 0069
F أنا
U + 0066 U + 0069
2
U + 0032 U + 2075
2
U + 0032 U + 2075
2
U + 0032 U + 2075
2 5
U + 0032 U + 0035
2 5
U + 0032 U + 0035
ẛ̣
يو + 1E9B U + 0323
ſ ̣ ̇
U + 017F U + 0323 U + 0307
̣
يو + 1E9B U + 0323
س ̣ ̇
U + 0073 U + 0323 U + 0307
ش + 1E69
ذ
يو + 0439
و ̆
يو + 0438 U + 0306
ذ
يو + 0439
و ̆
يو + 0438 U + 0306
ذ
يو + 0439
ه
U + 0451
ه ̈
يو + 0435 U + 0308
ه
U + 0451
ه ̈
يو + 0435 U + 0308
ه
U + 0451
أ
يو + 0410
أ
يو + 0410
أ
يو + 0410
أ
يو + 0410
أ
يو + 0410
ش + 304 ج
ش + 304 ب U + 3099
ش + 304 ج
ش + 304 ب U + 3099
ش + 304 ج
U + 2167
U + 2167
U + 2167
الخامس أنا أنا أنا
U + 0056 U + 0049 U + 0049 U + 0049
الخامس أنا أنا أنا
U + 0056 U + 0049 U + 0049 U + 0049
ç
U + 00E7
ج ̧
U + 0063 U + 0327
ç
U + 00E7
ج ̧
U + 0063 U + 0327
ç
U + 00E7

خطاب ثنائي الاتجاه

يدعم معيار Unicode لغات الكتابة ذات الاتجاه من اليسار إلى اليمين (eng. من اليسار إلى اليمين ، LTR) ، ومع الكتابة من اليمين إلى اليسار (م. من اليمين إلى اليسار ، من اليمين إلى اليسار ، من اليمين إلى اليسار) - على سبيل المثال ، الحروف العربية والعبرية. في كلتا الحالتين ، يتم تخزين الأحرف بترتيب "طبيعي" ؛ يتم توفير عرضهم ، مع مراعاة الاتجاه المطلوب للرسالة ، من خلال التطبيق.

بالإضافة إلى ذلك ، يدعم Unicode النصوص المدمجة التي تجمع بين الأجزاء ذات الاتجاهات المختلفة للحرف. هذه الميزة تسمى ثنائية الاتجاه(م. نص ثنائي الاتجاه ، ثنائي الاتجاه). بعض معالجات النصوص المبسطة (على سبيل المثال ، بتنسيق هاتف خليوي) يمكن أن يدعم Unicode ، ولكن ليس الدعم ثنائي الاتجاه. يتم تقسيم جميع أحرف Unicode إلى عدة فئات: مكتوبة من اليسار إلى اليمين ، ومكتوبة من اليمين إلى اليسار ، ومكتوبة في أي اتجاه. رموز الفئة الأخيرة (علامات الترقيم بشكل أساسي) ، عند عرضها ، تأخذ اتجاه النص المحيط.

الرموز المميزة


رسم تخطيطي للمستوى الأساسي متعدد اللغات لـ Unicode

يتضمن Unicode تقريبًا جميع البرامج النصية الحديثة ، بما في ذلك:

  • عربي
  • أرميني ،
  • البنغالية ،
  • البورمية ،
  • الفعل
  • اليونانية
  • الجورجية ،
  • الديفاناغارية
  • يهودي،
  • السيريلية
  • الصينية (تستخدم الأحرف الصينية بنشاط في اللغة اليابانية ، وكذلك في اللغة الكورية أحيانًا) ،
  • قبطي
  • الخمير ،
  • اللاتينية ،
  • التاميل
  • الكورية (هانغول) ،
  • شيروكي
  • الاثيوبية ،
  • اليابانية (والتي تشمل ، بالإضافة إلى الأبجدية المقطعية ، الأحرف الصينية أيضًا)

آخر.

للأغراض الأكاديمية ، تمت إضافة العديد من النصوص التاريخية ، بما في ذلك: الرونية الجرمانية ، والرونية التركية القديمة ، والكتابة اليونانية القديمة ، والهيروغليفية المصرية ، والمسمارية ، وكتابة المايا ، والأبجدية الأترورية.

يوفر Unicode مجموعة كبيرة من الرموز والرسوم التوضيحية الرياضية والموسيقية.

من حيث المبدأ ، لا يتضمن Unicode أعلام الدولة وشعارات الشركة والمنتج ، على الرغم من وجودها في الخطوط (على سبيل المثال ، شعار Apple في ترميز MacRoman (0xF0) أو شعار Windowsفي Wingdings الخط (0xFF)). في خطوط Unicode ، يجب وضع الشعارات في منطقة الأحرف المخصصة فقط.

ISO / IEC 10646

يعمل اتحاد Unicode بشكل وثيق مع فريق العمل ISO / IEC / JTC1 / SC2 / WG2 ، التي تعمل على تطوير المعيار الدولي 10646 (ISO / IEC 10646). تم إنشاء التزامن بين معيار Unicode و ISO / IEC 10646 ، على الرغم من أن كل معيار يستخدم المصطلحات الخاصة به ونظام التوثيق.

تعاون اتحاد يونيكود مع المنظمة الدولية للتوحيد القياسي (م. المنظمة الدولية للتوحيد القياسي ISO ) في عام 1991. في عام 1993 ، أصدرت ISO معيار DIS 10646.1. للمزامنة معه ، وافق الاتحاد على الإصدار 1.1 من معيار Unicode ، والذي تم استكماله بأحرف إضافية من DIS 10646.1. نتيجة لذلك ، فإن قيم الأحرف المشفرة في Unicode 1.1 و DIS 10646.1 هي نفسها تمامًا.

في المستقبل ، استمر التعاون بين المنظمتين. في عام 2000 ، تمت مزامنة معيار Unicode 3.0 مع ISO / IEC 10646-1: 2000. ستتم مزامنة الإصدار الثالث القادم من ISO / IEC 10646 مع Unicode 4.0. ربما سيتم نشر هذه المواصفات كمعيار واحد.

على غرار تنسيقات UTF-16 و UTF-32 في معيار Unicode ، يحتوي معيار ISO / IEC 10646 أيضًا على شكلين رئيسيين لترميز الأحرف: UCS-2 (2 بايت لكل حرف ، على غرار UTF-16) و UCS-4 (4 بايت لكل حرف ، على غرار UTF-32). يعني UCS متعدد ثماني بتات عالمية(متعدد البايت) مجموعة الأحرف المشفرة(م. مجموعة أحرف عالمية متعددة الثماني بتات ). يمكن اعتبار UCS-2 مجموعة فرعية من UTF-16 (UTF-16 بدون أزواج بديلة) و UCS-4 هو مرادف لـ UTF-32.

الاختلافات بين معايير Unicode و ISO / IEC 10646:

  • اختلافات طفيفة في المصطلحات ؛
  • لا يتضمن ISO / IEC 10646 الأقسام المطلوبة للتنفيذ الكامل لدعم Unicode:
    • لا توجد بيانات عن الترميز الثنائي للأحرف ؛
    • لا يوجد وصف لخوارزميات المقارنة (هندسة. التجميع) وتقديم (eng. استدعاء) الشخصيات؛
    • لا توجد قائمة بخصائص الرموز (على سبيل المثال ، لا توجد قائمة بالخصائص المطلوبة لتنفيذ دعم ثنائي الاتجاه (eng. ثنائي الاتجاه) حروف).

طرق العرض

Unicode له عدة أشكال من التمثيل (eng. تنسيق تحويل Unicode ، UTF ): UTF-8 و UTF-16 (UTF-16BE و UTF-16LE) و UTF-32 (UTF-32BE و UTF-32LE). تم تطوير نموذج تمثيل UTF-7 أيضًا للإرسال عبر قنوات سبع بتات ، ولكن نظرًا لعدم التوافق مع ASCII ، لم يتم نشره ولم يتم تضمينه في المعيار. في 1 أبريل 2005 ، تم اقتراح تقديمين مرحين: UTF-9 و UTF-18 (RFC 4042).

تستخدم أنظمة Microsoft Windows NT و Windows 2000 و Windows XP بشكل أساسي نموذج UTF-16LE. على غرار يونكس أنظمة التشغيلاعتمد GNU / Linux و BSD و Mac OS X نموذج UTF-8 للملفات و UTF-32 أو UTF-8 لمعالجة الأحرف في ذاكرة الوصول العشوائي.

Punycode هو شكل آخر من أشكال ترميز تسلسلات أحرف Unicode إلى ما يسمى بتسلسلات ACE ، والتي تتكون فقط من أحرف أبجدية رقمية ، كما هو مسموح به في أسماء المجال.

UTF-8

UTF-8 هو تمثيل Unicode الذي يوفر أفضل توافق مع الأنظمة القديمة التي تستخدم أحرف 8 بت.

يتم تحويل النص الذي يحتوي على أحرف مرقمة أقل من 128 فقط إلى نص ASCII عادي عند كتابته بتنسيق UTF-8. على العكس من ذلك ، في نص UTF-8 ، أي بايت بقيمة أقل من 128 عرضًا حرف ASCIIبنفس الكود.

يتم تمثيل باقي أحرف Unicode بتسلسلات من 2 إلى 6 بايت في الطول (في الواقع ، حتى 4 بايت فقط ، حيث لا توجد أحرف برمز أكبر من 10FFFF في Unicode ، ولا توجد خطط لتقديمها في المستقبل) ، حيث يكون للبايت الأول الشكل دائمًا 11xxxxxxو البقية - 10xxxxxx... لا يتم استخدام أزواج بديلة في UTF-8 ، 4 بايت كافية لكتابة أي حرف يونيكود.

تم اختراع UTF-8 في 2 سبتمبر 1992 بواسطة كين طومسون وروب بايك وتم تنفيذه في الخطة 9... أصبح معيار UTF-8 الآن مكرسًا رسميًا في RFC 3629 و ISO / IEC 10646 Annex D.

يتم اشتقاق أحرف UTF-8 من Unicode على النحو التالي:

Unicode UTF-8: 0x00000000 - 0x0000007F: 0xxxxxxx 0x00000080 - 0x000007FF: 110xxxxx 10xxxxxx 0x00000800 - 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx 0x00010000 - 0x001FFFFFF: 11110xxx 10xxxx 10xxxxxxxxx

ممكن نظريًا ، ولكنه غير مدرج أيضًا في المعيار:

0x00200000 - 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x04000000 - 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

بالرغم من أن UTF-8 يسمح لك بتحديد نفس الحرف بعدة طرق ، إلا أن أقصرها فقط هو الصحيح. يجب رفض باقي الاستمارات لأسباب أمنية.

ترتيب البايت

في دفق بيانات UTF-16 ، يمكن كتابة البايت المنخفض إما قبل البايت المرتفع (eng. UTF-16 صغير الهند) ، أو بعد الأقدم (م. UTF-16 كبير الهند). وبالمثل ، هناك نوعان مختلفان من التشفير رباعي البايت - UTF-32LE و UTF-32BE.

لتحديد شكل تمثيل Unicode في البداية ملف نصيالتوقيع مكتوب - الحرف U + FEFF (مسافة غير قابلة للكسر بعرض صفري) ، تسمى أيضًا علامة تسلسل البايت(م. علامة ترتيب البايت (BOM)). هذا يجعل من الممكن التمييز بين UTF-16LE و UTF-16BE لأن حرف U + FFFE غير موجود. كما يتم استخدامه أحيانًا للإشارة إلى تنسيق UTF-8 ، على الرغم من أن مفهوم ترتيب البايت لا ينطبق على هذا التنسيق. تبدأ الملفات التي تتبع هذا الاصطلاح بتسلسلات البايت هذه:

UTF-8 EF BB BF UTF-16BE FE FF UTF-16LE FF FE UTF-32BE 00 00 FE FF UTF-32LE FF FE 00 00

لسوء الحظ ، لا تميز هذه الطريقة بشكل موثوق بين UTF-16LE و UTF-32LE ، نظرًا لأن Unicode يسمح بالحرف U + 0000 (على الرغم من أن النصوص الحقيقية نادرًا ما تبدأ به).

يجب أن تكون الملفات بترميز UTF-16 و UTF-32 التي لا تحتوي على قائمة مكونات الصنف بترتيب بايت كبير (unicode.org).

Unicode والترميزات التقليدية

أدى إدخال Unicode إلى تغيير نهج ترميزات 8 بت التقليدية. إذا تم تحديد الترميز مسبقًا بواسطة الخط ، فسيتم تحديده الآن بواسطة جدول المراسلات بين هذا الترميز و Unicode.

في الواقع ، أصبحت ترميزات 8 بت تمثل مجموعة فرعية من Unicode. هذا جعل الأمر أسهل بكثير لإنشاء البرامج التي يجب أن تعمل مع العديد من الترميزات المختلفة: الآن ، لإضافة دعم لترميز آخر ، تحتاج فقط إلى إضافة جدول بحث Unicode آخر.

بالإضافة إلى ذلك ، تسمح العديد من تنسيقات البيانات بإدراج أي أحرف Unicode ، حتى إذا كان المستند مكتوبًا بترميز 8 بت القديم. على سبيل المثال ، يمكنك استخدام رموز العطف في HTML.

تطبيق

توفر معظم أنظمة التشغيل الحديثة درجة معينة من دعم Unicode.

في أنظمة تشغيل عائلة Windows NT ، يتم استخدام ترميز UTF-16LE مزدوج البايت للتمثيل الداخلي لأسماء الملفات وسلاسل النظام الأخرى. مكالمات النظام التي تأخذ معلمات السلسلة متوفرة في متغيرات أحادية البايت ومزدوجة البايت. لمزيد من المعلومات ، راجع مقالة Unicode عن عائلة أنظمة تشغيل Microsoft Windows.

تستخدم أنظمة التشغيل المشابهة لـ UNIX ، بما في ذلك GNU / Linux و BSD و OS X ، ترميز UTF-8 لتمثيل Unicode. يمكن لمعظم البرامج التعامل مع UTF-8 كترميز تقليدي أحادي البايت ، بغض النظر عن حقيقة أن الحرف يتم تمثيله في عدة وحدات بايت متتالية. للعمل مع الأحرف الفردية ، يتم عادةً إعادة تشفير السلاسل إلى UCS-4 ، بحيث يكون لكل حرف كلمة آلية.

كان يوم الأربعاء أحد أول التطبيقات التجارية الناجحة لـ Unicode برمجة جافا... لقد تخلت بشكل أساسي عن تمثيل الأحرف 8 بت لصالح 16 بت واحد. زاد هذا الحل من استهلاك الذاكرة ، لكنه سمح لنا بإعادة تجريد مهم إلى البرمجة: حرف واحد عشوائي (نوع شار). على وجه الخصوص ، يمكن للمبرمج أن يعمل مع سلسلة كما هو الحال مع مصفوفة بسيطة. لسوء الحظ ، لم يكن النجاح نهائيًا ، فقد تجاوز Unicode حد 16 بت وبواسطة J2SE 5.0 ، بدأت شخصية تعسفية مرة أخرى في شغل عدد متغير من وحدات الذاكرة - واحدة شارأو اثنين (انظر زوج بديل).

تدعم معظم لغات البرمجة الآن سلاسل Unicode ، على الرغم من أن تمثيلها قد يختلف اعتمادًا على التنفيذ.

طرق الإدخال

نظرًا لعدم وجود تخطيط للوحة المفاتيح يسمح بإدخال جميع أحرف Unicode في نفس الوقت ، فإن الدعم مطلوب من أنظمة التشغيل والتطبيقات. طرق بديلةإدخال أحرف Unicode التعسفي.

مايكروسوفت ويندوز

على الرغم من أن الأداة المساعدة "مخطط توزيع الأحرف" (charmap.exe) تبدأ في نظام التشغيل Windows 2000 ، إلا أنها تدعم أحرف Unicode وتسمح لك بنسخها إلى الحافظة ، وهذا الدعم يقتصر فقط على المستوى الأساسي (رموز الأحرف U + 0000… U + FFFF). الرموز ذات الرموز من U + 10000 لا يتم عرض "جدول الرموز".

يوجد جدول مشابه ، على سبيل المثال ، في مايكروسوفت وورد.

في بعض الأحيان يمكنك كتابة رمز سداسي عشري ، والضغط على Alt + X ، وسيتم استبدال الرمز بالحرف المناسب ، على سبيل المثال ، في WordPad ، Microsoft Word. في المحررين ، يقوم Alt + X بإجراء التحويل العكسي أيضًا.

في العديد من برامج MS Windows ، للحصول على حرف Unicode، أثناء الضغط باستمرار على مفتاح Alt ، اكتب القيمة العشرية لرمز الحرف المفاتيح العددية... على سبيل المثال ، ستكون المجموعات Alt + 0171 (") و Alt + 0187 (") و Alt + 0769 (علامة التشكيل) مفيدة عند كتابة النصوص السيريلية. تعتبر التركيبات Alt + 0133 (...) و Alt + 0151 (-) مثيرة للاهتمام أيضًا.

ماكنتوش

يدعم Mac OS 8.5 والإصدارات الأحدث أسلوب إدخال يسمى "Unicode Hex Input". أثناء الضغط باستمرار على مفتاح الخيار ، تحتاج إلى كتابة الرمز السداسي العشري المكون من أربعة أرقام للحرف المطلوب. تسمح لك هذه الطريقة بإدخال أحرف برموز أكبر من U + FFFF باستخدام أزواج بديلة ؛ سيتم استبدال هذه الأزواج تلقائيًا بنظام التشغيل بأحرف فردية. قبل استخدام طريقة الإدخال هذه ، تحتاج إلى التنشيط في القسم المقابل من إعدادات النظام ثم تحديد طريقة الإدخال الحالية في قائمة لوحة المفاتيح.

بدءًا من نظام التشغيل Mac OS X 10.2 ، يوجد أيضًا تطبيق Character Palette الذي يسمح لك بتحديد أحرف من جدول يمكنك من خلاله تحديد أحرف من كتلة معينة أو أحرف مدعومة بخط معين.

جنو / لينكس

يحتوي جنوم أيضًا على الأداة المساعدة Symbol Map (gucharmap سابقًا) التي تتيح لك عرض الرموز لكتلة أو نظام كتابة معين وتوفر القدرة على البحث بالاسم أو وصف الرمز. عندما يكون رمز الحرف المطلوب معروفًا ، يمكن إدخاله وفقًا لمعيار ISO 14755: أثناء الضغط باستمرار على مفاتيح Ctrl + Shift ، أدخل الرمز السداسي العشري (بدءًا من بعض إصدارات GTK + ، يجب إدخال الرمز عن طريق الضغط "U"). يمكن أن يصل طول الشفرة السداسية العشرية التي تم إدخالها إلى 32 بت ، مما يسمح لك بإدخال أي أحرف Unicode دون استخدام أزواج بديلة.

تدعم جميع تطبيقات X Window ، بما في ذلك GNOME و KDE ، إدخال مفتاح Compose. بالنسبة للوحات المفاتيح التي لا تحتوي على مفتاح إنشاء مخصص ، يمكنك تعيين أي مفتاح لهذا الغرض - على سبيل المثال ، ⇪ Caps Lock.

تسمح وحدة تحكم GNU / Linux أيضًا بإدخال حرف Unicode عن طريق الكود الخاص به - لهذا ، يجب إدخال الرمز العشري للحرف كأرقام من كتلة لوحة المفاتيح الموسعة أثناء الضغط باستمرار على مفتاح Alt. يمكنك إدخال الأحرف عن طريق الكود السداسي عشري: لهذا تحتاج إلى الضغط باستمرار على مفتاح AltGr ، والدخول أرقام A-Fاستخدم المفاتيح الموجودة على لوحة المفاتيح الممتدة من NumLock إلى ↵ Enter (في اتجاه عقارب الساعة). يتم أيضًا دعم الإدخال وفقًا لمعيار ISO 14755. ولكي تعمل الطرق المذكورة أعلاه ، تحتاج إلى تمكين وضع Unicode في وحدة التحكم عن طريق الاتصال unicode_start(1) وحدد الخط المناسب عن طريق الاتصال سيتفونت(8).

يدعم Mozilla Firefox لنظام Linux إدخال الأحرف ISO 14755.

مشاكل يونيكود

في Unicode ، الإنجليزية "a" و "a" البولندية هي نفس الحرف. وبنفس الطريقة ، يعتبر الرمز "a" الروسي و "a" الصربي نفس الرمز (لكنهما مختلفان عن اللاتينية "a"). مبدأ الترميز هذا ليس عالميًا ؛ على ما يبدو ، لا يمكن أن يوجد حل "لجميع المناسبات" على الإطلاق.

  • تتم كتابة النصوص الصينية والكورية واليابانية بشكل تقليدي من أعلى إلى أسفل ، بدءًا من الزاوية اليمنى العليا. التبديل بين الهجاء الأفقي والعمودي لهذه اللغات غير منصوص عليه في Unicode - يجب أن يتم ذلك عن طريق لغات الترميز أو الآليات الداخلية لمعالجات الكلمات.
  • يسمح Unicode بأوزان مختلفة لنفس الحرف اعتمادًا على اللغة. لذلك ، يمكن أن يكون للأحرف الصينية أنماط مختلفة في الصينية واليابانية (كانجي) والكورية (هانشا) ، ولكن في نفس الوقت في Unicode يتم الإشارة إليها بنفس الرمز (ما يسمى بتوحيد CJK) ، على الرغم من أن الأحرف المبسطة والكاملة لا تزال لها رموز مختلفة ... وبالمثل ، تستخدم اللغات الروسية والصربية أسلوبًا مائلًا مختلفًا. NSو تي(في الصربية يبدون مثل u و w ، انظر مائل الصربية). لذلك ، تحتاج إلى التأكد من أن النص يتم تمييزه دائمًا بشكل صحيح على أنه مرتبط بلغة أو أخرى.
  • تعتمد الترجمة من الأحرف الصغيرة إلى الأحرف الكبيرة أيضًا على اللغة. على سبيل المثال: في التركية هناك حرفان Ii و Ii - وبالتالي ، تتعارض قواعد تغيير الحالة التركية مع القواعد الإنجليزية ، والتي تتطلب ترجمة "i" إلى "I". توجد مشاكل مماثلة في لغات أخرى - على سبيل المثال ، في اللهجة الكندية للفرنسية ، تتم ترجمة السجل بشكل مختلف قليلاً عن فرنسا.
  • حتى مع الأرقام العربية ، هناك بعض التفاصيل الدقيقة المطبعية: يمكن أن تكون الأرقام "كبيرة" و "صغيرة" ، متناسبة وأحادية المسافة - بالنسبة إلى Unicode ، لا يوجد فرق بينهما. تبقى هذه الفروق الدقيقة مع البرنامج.

لا تتعلق بعض العيوب بـ Unicode نفسه ، بل بإمكانيات معالجات النصوص.

  • تشغل ملفات النص غير اللاتيني في Unicode دائمًا مساحة أكبر ، نظرًا لأن حرفًا واحدًا لا يتم ترميزه ببايت واحد ، كما هو الحال في الترميزات الوطنية المختلفة ، ولكن بتسلسل البايت (الاستثناء هو UTF-8 للغات التي تناسب أبجديتها إلى ASCII ، بالإضافة إلى وجود حرفين في النص والمزيد من اللغات ، الأبجدية منها ليسيناسب ASCII). يشغل ملف الخط المطلوب لعرض جميع الأحرف في جدول Unicode مساحة ذاكرة كبيرة نسبيًا وهو أكثر كثافة من الناحية الحسابية من خط اللغة الوطنية للمستخدم وحده. مع زيادة قوة أنظمة الكمبيوتر وانخفاض تكلفة الذاكرة ومساحة القرص ، تصبح هذه المشكلة أقل أهمية ؛ ومع ذلك ، تظل مناسبة للأجهزة المحمولة مثل الهواتف المحمولة.
  • على الرغم من تطبيق دعم Unicode في أكثر أنظمة التشغيل شيوعًا ، إلا أنه لا يتم تطبيقه كلها البرمجياتيدعم العمل الصحيحمعه. على وجه الخصوص ، لا تتم معالجة علامات ترتيب البايت (BOM) دائمًا ولا يتم دعم الأحرف المحركة بشكل جيد. المشكلة مؤقتة وهي نتيجة الجدة المقارنة لمعايير Unicode (بالمقارنة مع الترميزات الوطنية أحادية البايت).
  • ينخفض ​​أداء جميع برامج معالجة السلاسل (بما في ذلك الأنواع الموجودة في قاعدة البيانات) عند استخدام Unicode بدلاً من الترميزات أحادية البايت.

لا تزال بعض أنظمة الكتابة النادرة غير ممثلة بشكل صحيح في Unicode. لم يتم بعد تنفيذ تصوير الأحرف المرتفعة "الطويلة" الممتدة على عدة أحرف ، كما هو الحال ، على سبيل المثال ، في الكنيسة السلافية.

يونيكود أو يونيكود؟

"Unicode" هو اسم علم (أو جزء من اسم ، على سبيل المثال ، Unicode Consortium) واسم شائع مشتق من اللغة الإنجليزية.

للوهلة الأولى ، يفضل استخدام التهجئة "Unicode". في اللغة الروسية ، هناك بالفعل مورفيمات "uni-" (الكلمات التي تحتوي على العنصر اللاتيني "uni-" تمت ترجمتها وكتابتها تقليديًا من خلال "uni-": عالمي ، أحادي القطب ، توحيد ، موحد) و "رمز". ضد، العلامات التجارية، المستعارة من اللغة الإنجليزية ، يتم نقلها عادةً عن طريق النسخ العملي ، حيث يتم كتابة المجموعة غير الأصلية من الأحرف "uni-" في شكل "uni-" ("Unilever" ، "Unix" ، إلخ.) ، وهذا هو ، بنفس الطريقة كما في حالة الاختصارات حرفًا بحرف مثل اليونيسف "صندوق الطوارئ الدولي للأطفال التابع للأمم المتحدة" - اليونيسف.

لقد دخلت تهجئة "Unicode" بقوة في النصوص الصادرة باللغة الروسية. تستخدم ويكيبيديا الإصدار الأكثر شيوعًا. في MS Windows ، يتم استخدام خيار Unicode.

توجد صفحة خاصة على موقع الكونسورتيوم ، حيث توجد مشاكل نقل كلمة "Unicode" إليها لغات مختلفةوأنظمة الكتابة. بالنسبة للأبجدية السيريلية الروسية ، تم تحديد خيار "Unicode".

عادةً ما يتم التعامل مع المشكلات المرتبطة بالترميز بواسطة البرنامج ، لذلك لا توجد عادةً صعوبة في استخدام الترميزات. إذا ظهرت صعوبات ، فعادة ما يتم إنشاؤها بواسطة برامج سيئة - لا تتردد في إرسالها إلى سلة المهملات.

أدعو الجميع للتحدث

ما هو الترميز

في اللغة الروسية ، يُطلق على "مجموعة الأحرف" أيضًا جدول "مجموعة الأحرف" ، وعملية استخدام هذا الجدول لترجمة المعلومات من تمثيل الكمبيوتر إلى تمثيل بشري ، وخاصية ملف نصي ، مما يعكس استخدام نظام معين من الرموز فيه عند عرض النص.

كيف يتم تشفير النص

يشار إلى مجموعة الرموز المستخدمة في كتابة النص في مصطلحات الكمبيوتر كأبجدية ؛ عادة ما يسمى عدد الرموز في الأبجدية قوتها. لتمثيل المعلومات النصية في جهاز كمبيوتر ، غالبًا ما يتم استخدام أبجدية بسعة 256 حرفًا. يحمل أحد أحرفه 8 بتات من المعلومات ، وبالتالي ، فإن الرمز الثنائي لكل حرف يأخذ 1 بايت من ذاكرة الكمبيوتر. يتم ترقيم جميع أحرف مثل هذه الأبجدية من 0 إلى 255 ، ويتوافق كل رقم مع رمز ثنائي مكون من 8 بتات ، وهو الرقم الترتيبي للحرف في نظام الأرقام الثنائية - من 00000000 إلى 11111111. فقط أول 128 حرفًا مع أرقام من صفر (رمز ثنائي 00000000) إلى 127 (01111111). وتشمل هذه الأحرف الصغيرة و الأحرف الكبيرةالأبجدية اللاتينية والأرقام وعلامات الترقيم والأقواس ، إلخ. تُستخدم الرموز الـ 128 المتبقية ، بدءًا من 128 (الرمز الثنائي 10000000) وتنتهي بـ 255 (11111111) ، لتشفير الأحرف الأبجدية الوطنية والرموز الرسمية والعلمية.

أنواع الترميزات

أشهر جدول ترميز هو ASCII (الكود القياسي الأمريكي لتبادل المعلومات). تم تطويره في الأصل لنقل النصوص عن طريق التلغراف ، وفي ذلك الوقت كان 7 بت ، أي ، تم استخدام 128 تركيبة 7 بت فقط لترميز الأحرف الإنجليزية ، وأحرف الخدمة والتحكم. في هذه الحالة ، تم استخدام أول 32 مجموعة (رموز) لتشفير إشارات التحكم (بداية النص ، ونهاية السطر ، وعودة أول السطر ، والمكالمة ، ونهاية النص ، وما إلى ذلك). في تطوير أجهزة كمبيوتر IBM الأولى ، تم استخدام هذا الرمز لتمثيل الرموز في الكمبيوتر. منذ ذلك الحين في مصدر الرمزكان ASCII 128 حرفًا فقط ، لأن تشفيرها كان قيمًا كافية للبايت مع بت 8 يساوي 0. بدأ استخدام قيم البايت مع بت 8 يساوي 1 لتمثيل الأحرف الرسومية الزائفة والعلامات الرياضية وبعض الأحرف من لغات أخرى غير الإنجليزية (اليونانية ، علامات التشكيل الألمانية ، علامات التشكيل الفرنسية ، إلخ). عندما بدأوا في تكييف أجهزة الكمبيوتر مع البلدان واللغات الأخرى ، لم يعد هناك مساحة كافية للرموز الجديدة. لدعم اللغات الأخرى غير الإنجليزية بشكل كامل ، قامت شركة IBM بتقديم العديد من جداول الرموز الخاصة بكل بلد. لذلك بالنسبة للدول الاسكندنافية ، تم اقتراح الجدول 865 (الشمال) ، للدول العربية - الجدول 864 (عربي) ، لإسرائيل - الجدول 862 (إسرائيل) ، وهكذا. في هذه الجداول ، تم استخدام بعض الرموز من النصف الثاني من جدول الرموز لتمثيل أحرف الأبجديات الوطنية (من خلال استبعاد بعض الأحرف الرسومية الزائفة). تطور الوضع مع اللغة الروسية بطريقة خاصة. من الواضح أنه يمكن استبدال الأحرف في النصف الثاني من جدول الرموز طرق مختلفة... لذلك ، ظهرت عدة جداول مختلفة لترميز الأحرف السيريلية للغة الروسية: KOI8-R و IBM-866 و CP-1251 و ISO-8551-5. كلهم يمثلون رموز النصف الأول من الجدول بنفس الطريقة (من 0 إلى 127) ويختلفون في تمثيل رموز الأبجدية الروسية والرسومات الزائفة. بالنسبة للغات مثل الصينية أو اليابانية ، فإن 256 حرفًا غير كافية بشكل عام. بالإضافة إلى ذلك ، هناك دائمًا مشكلة إخراج النصوص أو حفظها في ملف واحد في نفس الوقت على النصوص لغات مختلفة(على سبيل المثال ، عند الاقتباس). لذلك ، عالمية جدول الكود UNICODE ، تحتوي على رموز مستخدمة في لغات جميع شعوب العالم ، بالإضافة إلى رموز خدمية ومساعدة مختلفة (علامات ترقيم ، رموز رياضية وتقنية ، أسهم ، علامات تشكيل ، إلخ). من الواضح أن بايت واحد لا يكفي لترميز مثل هذا العدد الكبير من الأحرف. لذلك تستخدم UNICODE رموز 16 بت (2 بايت) لتمثيل 65536 حرفًا. حتى الآن ، تم استخدام حوالي 49000 رمز (كان آخر تغيير مهم هو إدخال رمز عملة اليورو في سبتمبر 1998). للتوافق مع الترميزات السابقة ، فإن أول 256 رمزًا هي نفسها الموجودة في معيار ASCII. في معيار UNICODE ، باستثناء المواصفات المحددة كود ثنائي(عادةً ما يتم الإشارة إلى هذه الرموز بالحرف U ، متبوعًا بعلامة + والرمز الفعلي في التمثيل السداسي العشري) يتم تعيين اسم محدد لكل حرف. مكون آخر لمعيار UNICODE هو خوارزميات للتحويل الفردي لرموز UNICODE في سلسلة من البايتات ذات الطول المتغير. ترجع الحاجة إلى مثل هذه الخوارزميات إلى حقيقة أنه ليس كل التطبيقات قادرة على العمل مع UNICODE. بعض التطبيقات لا تفهم سوى رموز ASCII ذات 7 بتات ، بينما تفهم التطبيقات الأخرى رموز ASCII ذات 8 بتات. تستخدم هذه التطبيقات ما يسمى برموز ASCII الموسعة لتمثيل الأحرف التي لا تتناسب مع مجموعة مكونة من 128 حرفًا أو 256 حرفًا ، على التوالي ، عندما يتم تشفير الأحرف بسلاسل بايت متغيرة الطول. يستخدم UTF-7 لتحويل رموز UNICODE بشكل عكسي إلى رموز ASCII الممتدة 7 بت ، ويستخدم UTF-8 لتحويل رموز UNICODE بشكل عكسي إلى رموز ASCII ممتدة 8 بت. لاحظ أن كلاً من ASCII و UNICODE ومعايير ترميز الأحرف الأخرى لا تحدد صور الأحرف ، ولكن فقط تكوين مجموعة الأحرف وطريقة تمثيلها في الكمبيوتر. بالإضافة إلى ذلك (والذي قد لا يكون واضحًا على الفور) ، فإن ترتيب تعداد الأحرف في المجموعة مهم جدًا ، لأنه يؤثر على خوارزميات الفرز بشكل أكثر أهمية. إنه جدول مراسلات الرموز من مجموعة معينة (على سبيل المثال ، الرموز المستخدمة لتمثيل المعلومات عن اللغة الانجليزية، أو بلغات مختلفة ، كما في حالة UNICODE) ويُشار إليها بمصطلح جدول ترميز الأحرف أو مجموعة أحرف. كل ترميز قياسي له اسم ، على سبيل المثال ، KOI8-R ، ISO_8859-1 ، ASCII. للأسف ، لا يوجد معيار لترميز الأسماء.

الترميزات الشائعة

ISO 646 o ASCII EBCDIC ISO 8859: o ISO 8859-1 - ISO 8859-11، ISO 8859-13، ISO 8859-14، ISO 8859-15 o CP437، CP737، CP850، CP852، CP855، CP857، CP858، CP860، CP861، CP863، CP865، CP866، CP869 ترميزات Microsoft Windows: o Windows-1250 للغات وسط أوروبا التي تستخدم الأحرف اللاتينية o Windows-1251 للأبجدية السيريلية o Windows-1252 للغات الغربية o Windows-1253 للغة اليونانية o Windows-1254 للغة التركية o Windows-1255 للعبرية o Windows-1256 للغة العربية o Windows-1257 للغات البلطيق o Windows-1258 للغة الفيتنامية MacRoman و MacCyrillic KOI8 (KOI8-R و KOI8-U ...) و KOI-7 الترميز البلغاري ISCII VISCII Big5 (الأكثر شهرة إصدار Microsoft CP950) o HKSCS Guobiao o GB2312 o GBK (Microsoft CP936) o GB18030 Shift JIS للغة اليابانية (Microsoft CP932) EUC-KR للغة الكورية (Microsoft CP949) ISO-2022 و EUC للكتابة الصينية UTF-8 و UTF-16 ترميزات أحرف Unicode

في نظام الترميز ASCII(الكود القياسي الأمريكي لتبادل المعلومات) يتم تمثيل كل حرف ببايت واحد ، والذي يمكنه تشفير 256 حرفًا.

يحتوي ASCII على جدولين ترميز - أساسي وممتد. يعمل الجدول الأساسي على إصلاح قيم الرموز من 0 إلى 127 ، ويشير الجدول الموسع إلى أحرف بأرقام من 128 إلى 255. وهذا يكفي للتعبير عن مجموعات مختلفة من ثمانية بتات جميع أحرف اللغتين الإنجليزية والروسية ، بالأحرف الصغيرة والكبيرة ، بالإضافة إلى علامات الترقيم ، ورموز العمليات الحسابية الأساسية والرموز الخاصة الشائعة التي يمكن ملاحظتها على لوحة المفاتيح.

يتم إعطاء الرموز 32 الأولى من الجدول الأساسي ، بدءًا من الصفر ، لمصنعي الأجهزة (بشكل أساسي لمصنعي أجهزة الكمبيوتر وأجهزة الطباعة). تحتوي هذه المنطقة على ما يسمى برموز التحكم ، والتي لا تتوافق مع أي أحرف لغة ، وبالتالي ، لا يتم عرض هذه الرموز سواء على الشاشة أو على أجهزة الطباعة ، ولكن يمكن التحكم في كيفية إخراج البيانات الأخرى. بدءًا من الرمز 32 إلى الكود 127 ، يتم وضع رموز الأبجدية الإنجليزية وعلامات الترقيم والأرقام والعمليات الحسابية والرموز المساعدة ، ويمكن رؤيتها جميعًا على الجزء اللاتيني من لوحة مفاتيح الكمبيوتر.

الجزء الثاني الممتد مخصص لأنظمة التشفير الوطنية. هناك العديد من الأبجديات غير اللاتينية في العالم (العربية والعبرية واليونانية وما إلى ذلك) ، بما في ذلك الأبجدية السيريلية. أيضًا ، تختلف تخطيطات لوحة المفاتيح الألمانية والفرنسية والإسبانية عن تلك الموجودة في اللغة الإنجليزية.

كان الجزء الإنجليزي من لوحة المفاتيح يحتوي على العديد من المعايير ، ولكن الآن تم استبدالها جميعًا برمز ASCII واحد. بالنسبة للوحة المفاتيح الروسية ، كان هناك أيضًا العديد من المعايير: GOST ، GOST- البديل ، ISO (المنظمة الدولية للمعايير - المعهد الدولي للتوحيد القياسي) ، ولكن هذه المعايير الثلاثة قد تلاشت بالفعل ، على الرغم من أنها يمكن أن تلتقي في مكان ما ، في بعض أجهزة الكمبيوتر ما قبل الطوفان أو في شبكات الكمبيوتر.

ترميز الحرف الرئيسي للغة الروسية ، والذي يستخدم في أجهزة الكمبيوتر ذات التشغيل نظام ويندوزمسمى نظام التشغيل Windows-1251، تم تطويره من أجل الأبجدية السيريلية بواسطة Microsoft. بطبيعة الحال ، يتم ترميز الغالبية العظمى من بيانات نص الكمبيوتر في نظام التشغيل Windows-1251. بالمناسبة ، تم تطوير ترميزات بأرقام مختلفة مكونة من أربعة أرقام بواسطة Microsoft للأبجديات الشائعة الأخرى: العربية واليابانية وغيرها.

ترميز شائع آخر يسمى KOI-8(رمز تبادل المعلومات ، مكون من ثمانية أرقام) - يعود أصله إلى أوقات مجلس المساعدة الاقتصادية المتبادلة لدول أوروبا الشرقية. اليوم ، ينتشر ترميز KOI-8 على نطاق واسع في شبكات الكمبيوتر على أراضي روسيا وفي قطاع الإنترنت الروسي. يحدث أن بعض نصوص الرسالة أو أي شيء آخر غير قابل للقراءة ، مما يعني أنك بحاجة إلى التبديل من KOI-8 إلى Windows-1251. عشرة

في التسعينيات ، قررت أكبر الشركات المصنعة للبرامج: Microsoft ، Borland ، نفس Adobe ، الحاجة إلى تطوير نظام تشفير نص مختلف ، حيث يتم تخصيص كل حرف ليس 1 ، ولكن 2 بايت. حصلت على الاسم يونيكود، ومن الممكن ترميز 65.536 حرفًا من هذا المجال بما يكفي لاحتوائه في جدول واحد من الأبجديات الوطنية لجميع لغات الكوكب. معظم أحرف Unicode (حوالي 70٪) مشغولة بالحروف الصينية ، وفي الهند يوجد 11 حرفًا أبجديًا وطنيًا مختلفًا ، وهناك العديد من الأسماء الغريبة ، على سبيل المثال: كتابة السكان الأصليين الكنديين.

نظرًا لأن ترميز كل حرف في Unicode لم يتم تخصيص 8 بتات ، بل 16 بت ، فإن حجم الملف النصي يتضاعف. كان هذا في يوم من الأيام عقبة أمام إدخال نظام 16 بت. والآن ، مع محركات الأقراص الصلبة بالجيجابايت ، ومئات الميجابايت من ذاكرة الوصول العشوائي ، ومعالجات جيجاهيرتز ، ومضاعفة حجم الملفات النصية ، والتي ، على سبيل المثال ، مع الرسومات ، تشغل مساحة صغيرة جدًا ، لا يهم حقًا.

يتم ترتيب الأبجدية السيريلية في Unicode من 768 إلى 923 (أحرف أساسية) ومن 924 إلى 1023 (حروف سيريلية ممتدة ، ومختلف الأحرف الوطنية الأقل شيوعًا). إذا لم يتم تكييف البرنامج مع Cyrillic Unicode ، فمن الممكن أن يتم التعرف على الأحرف النصية ليس على أنها سيريلية ، بل لاتينية ممتدة (رموز من 256 إلى 511). وفي هذه الحالة ، بدلاً من النص ، تظهر على الشاشة مجموعة لا معنى لها من الرموز الغريبة المتنوعة.

هذا ممكن إذا كان البرنامج قديمًا ، تم إنشاؤه قبل عام 1995. أو واحدة نادرة ، لم يزعجها أحد بالترويس. من الممكن أيضًا أن يكون نظام التشغيل Windows المثبت على الكمبيوتر غير مهيأ بالكامل للأبجدية السيريلية. في هذه الحالة ، تحتاج إلى عمل الإدخالات المناسبة في التسجيل.