صيغة التحويل الموحد-8

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

صيغة التحويل الموحد-8 (بالإنجليزية: UTF-8)‏ هي اختصار للمصطلح (8-bit Unicode Transformation Format) الذي يترجم إلى صيغة تحويل نظام الحروف الدولي الموحد بقوة 8 بت. هذا الترميز وضع من قبل كل من روب بايك وكين تومسن[1] لتمثيل معيار نظام الحروف الدولي الموحد للحروف الأبجدية لأغلب لغات العالم، ويتم تشفير الرموز فيه في حجم يتراوح بين بايت واحد وأربعة بايت للرمز الواحد.[2][3][4]

سبب الإنشاء[5][عدل]

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

صيغة التحويل الموحد-8 هي ترميز الأحرف الافتراضية في HTML-5. أما إذا كانت صفحة ويب HTML5 تستخدم مجموعة أحرف مختلفة عن صيغة التحويل الموحد-8، فيجب تحديدها في وسم <meta>.

التاريخ[عدل]

المنظمة الدولية للمعايير (ISO) نصت على تشكيل مجموعة أحرف عالمية متعددة البايتات في عام 1989. يحتوي معيار ISO 10646 على ملحق غير مطلوب يسمى UTF-1 الذي يوفر ترميز لتيار البايت لنقاط التعليمات البرمجية 32 بت. من بين عدة مشاكل، لم يكن أداء هذا الترميز مرضيا. وربما كانت المشكلة الكبرى عدم وجود فصل واضح بين أسكي وغير أسكي. أدوات UTF - 1 الجديدة متوافقة مع النص المرمز بأسكي، ولكن قد تخلط النص المرمز بـ UTF-1 بين التعليمات البرمجية الموجودة التي تتوقع أسكي (أو أسكي الموسع)، لأنها قد تحتوي على وحدات البايت المستمرة في النطاق 0x21-0x7E والتي تعني شيئا آخر في أسكي، على سبيل المثال، 0x2F لـ '/'، وفاصل المسارات في نظام يونكس.

طول تشفير الرمز[عدل]

يتم تحديد طول تشفير الرمز بحسب الشكل الآتي:

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

الفرق بين يونيكود وصيغة التحويل الموحد-8[5][عدل]

يونيكود هو قائمة من الأحرف مع أرقام عشرية مميزة لكل حرف. على سبيل المثال C = 67 وB = 66 وA = 65. القائمة التالية من الأرقام العشرية 104 101 108 108 111 تمثل كلمة "hello".

صيغة التحويل الموحد-8 هو ترميز يوضح كيفية ترجمة هذه الأرقام إلى أرقام ثنائية ليتم تخزينها في جهاز الحاسب.بحسب نظام صيغة التحويل الموحد-8، يتم تخزين كلمة "hello" بإستخدام الأرقام التالية (بالنظام الثنائي): 01101000 01100101 01101100 01101100 01101100 011011111

الفرق بين صيغة التحويل الموحد-8 وصيغة التحويل الموحد-16[6][عدل]

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

المعايير[عدل]

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

  • RFC 3629 / STD 63 (عام 2003) الذي أرسى UTF-8 كعنصر بروتوكول إنترنت قياسي
  • RFC 5198 عرف UTF-8 NFC كشبكة تبادل (عام 2008)
  • ISO/IEC 10646:2014 (عام 2014)
  • The Unicode Standard، النسخة 11.0 (2018)

وهي تحل محل التعاريف الواردة في الوثائق التالية:

  • The Unicode Standard، نسخة 2.0، Appendix A (عام 1996)
  • ISO/IEC 10646-1:1993 Amendment 2 / Annex R (عام 1996)
  • RFC 2044 (عام 1996)
  • RFC 2279 (عام 1998)
  • The Unicode Standard، نسخة 3.0 (عام 2000)
  • Unicode Standard Annex : Unicode 3.1 (عام 2001)
  • The Unicode Standard، نسخة 5.0 (عام 2006)
  • The Unicode Standard، نسخة 6.0 (عام 2010)

الإشتقاقات[عدل]

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

  • CESU-8
  • MySQL utf8mb3
  • Modified UTF-8
  • WTF-8

مراجع[عدل]

  1. ^ Pike, Rob (30 Apr 2003). "UTF-8 history". مؤرشف من الأصل في 29 أكتوبر 2006. اطلع عليه بتاريخ September 7, 2012. الوسيط |CitationClass= تم تجاهله (مساعدة)
  2. ^ "Non-decodable Bytes in System Character Interfaces". python.org. 2009-04-22. مؤرشف من الأصل في 04 مايو 2018. اطلع عليه بتاريخ 13 أغسطس 2014. الوسيط |CitationClass= تم تجاهله (مساعدة); تحقق من التاريخ في: |تاريخ أرشيف= (مساعدة)
  3. ^ Pike, Rob; Thompson, Ken (1993). "Hello World or Καλημέρα κόσμε or こんにちは 世界". Proceedings of the Winter 1993 USENIX Conference (PDF). مؤرشف من الأصل (PDF) في 11 أكتوبر 2017. الوسيط |CitationClass= تم تجاهله (مساعدة)
  4. ^ Email Subject: UTF-8 history, From: "Rob 'Commander' Pike", Date: Wed, 30 Apr 2003..., ...UTF-8 was designed, in front of my eyes, on a placemat in a New Jersey diner one night in September or so 1992...So that night Ken wrote packing and unpacking code and I started tearing into the C and graphics libraries. The next day all the code was done... نسخة محفوظة 29 أكتوبر 2006 على موقع واي باك مشين.
  5. أ ب "HTML UTF-8 Reference". www.w3schools.com. مؤرشف من الأصل في 3 يناير 2021. اطلع عليه بتاريخ 05 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
  6. ^ "Difference Between UTF-8 and UTF-16 | Difference Between" (باللغة الإنجليزية). مؤرشف من الأصل في 23 أكتوبر 2020. اطلع عليه بتاريخ 10 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)