ضغط الترتيب الثنائي لليونيكود
يُعدّ ضغط يونيكود الثنائي المرتب ( BOCU ) نظام ضغط يونيكود متوافقًا مع MIME . يجمع BOCU-1 بين قابلية تطبيق UTF-8 الواسعة وصغر حجم نظام الضغط القياسي ليونيكود (SCSU). صُمم هذا الترميز ليكون مفيدًا في ضغط السلاسل النصية القصيرة، ويحافظ على ترتيب نقاط الترميز. تم تحديد BOCU-1 في مذكرة فنية خاصة بيونيكود. [ 1 ]
للمقارنة، تم اعتماد SCSU كخوارزمية ضغط قياسية لليونيكود بنسبة بايت إلى نقطة ترميز مماثلة لصفحات الترميز الخاصة بكل لغة . لم يُعتمد SCSU على نطاق واسع، لأنه غير مناسب لأنواع وسائط MIME النصية. على سبيل المثال، لا يمكن استخدام SCSU مباشرةً في رسائل البريد الإلكتروني والبروتوكولات المشابهة. يتطلب SCSU تصميمًا معقدًا للمشفّر لتحقيق أداء جيد. عادةً، تقوم خوارزميات مثل zip و bzip2 وغيرها من الخوارزميات القياسية في هذا المجال بضغط كميات أكبر من نصوص اليونيكود بكفاءة أعلى. [ 2 ]
كل من SCSU [ 3 ] و BOCU-1 [ 4 ] عبارة عن مجموعات أحرف مسجلة لدى IANA .
تفاصيل
جميع الأرقام في هذا القسم هي أرقام سداسية عشرية ، وجميع النطاقات شاملة.
تُشفّر نقاط الترميز من U+0000إلى U+0020في BOCU-1 كقيمة البايت المقابلة. أما جميع نقاط الترميز الأخرى (أي من إلى U+0021ومن إلى ) فتُشفّر كفرق بين نقطة الترميز ونسخة مُعَيَّرة من آخر نقطة ترميز مُشفّرة لم تكن مسافة ASCII ( ). الحالة الابتدائية هي . وتكون عملية التطبيع كما يلي:U+D7FFU+E000U+10FFFFU+0020U+0040
| نطاق الرموز | نقطة رمز موحدة | ملحوظات |
|---|---|---|
U+3040لU+309F | U+3070 | هيراغانا |
U+4E00لU+9FA5 | U+7711 | أونيهان |
U+AC00لU+D7A3 | U+C1D1 | هانغول |
U+0020 | حالة المُشفّر محفوظة كما هي | فضاء |
U+hhhh00إلى (باستثناء النطاقات المذكورة أعلاه)U+hhhh7F | U+hhhh40 | منتصف 128 |
U+hhhh80إلى (باستثناء النطاقات المذكورة أعلاه)U+hhhhFF | U+hhhhC0 | منتصف 128 |
يتم ترميز الفرق بين نقطة الترميز الحالية ونقطة الترميز السابقة المعيارية على النحو التالي:
| نطاق الفرق | نطاق تسلسل البايتات (انظر أدناه) |
|---|---|
-10FF9Fل-2DD0D | 21F058D9ل21FFFFFF |
-2DD0Cل-2912 | 220101ل24FFFF |
-2911ل-41 | 2501ل4FFF |
-40ل3F | 50لCF |
40ل2910 | D001لFAFF |
2911ل2DD0B | FB0101لFDFFFF |
2DD0Cل10FFBF | FE010101لFE19B454 |
يتم ترتيب كل نطاق بايت ترتيبًا معجميًا مع استبعاد قيم البايت الثلاثة عشر التالية: . على سبيل المثال، يتبع 00 07 08 09 0A 0B 0C 0D 0E 0F 1A 1B 20تسلسل البايت FC 06 FF، الذي يرمز إلى فرق قدره ، مباشرةً تسلسل البايت ، الذي يرمز إلى فرق قدره .1156BFC 10 011156C
أي إدخال ASCII بدون مسافة U+0000يُعيد ضبط المُشفِّر إلى الحالة الافتراضية . ولأن القيم المذكورة أعلاه تُغطي نقاط ترميز نهاية السطر ، وبما أن المُشفِّر يكون في حالة معروفة في بداية كل سطر، فإن تلف بايت واحد يؤثر على سطر واحد على الأكثر. وللمقارنة، فإن تلف بايت واحد في UTF-8 يؤثر على نقطة ترميز واحدة على الأكثر، بينما في SCSU قد يؤثر على المستند بأكمله.U+007FU+0020U+0040U+000DU+000A0D 0A
يوفر معيار BOCU-1 متانة مماثلة حتى مع النصوص المدخلة التي لا تحتوي على القيم المذكورة أعلاه، وذلك باستخدام رمز إعادة الضبط الخاص 0xFF. عندما يعثر جهاز فك التشفير على هذا البايت، فإنه يعيد ضبط حالته كما U+0040لو كان في نهاية سطر. لا يُنصح باستخدام 0xFFبايتات إعادة الضبط في مواصفات BOCU-1، لأنها تتعارض مع أهداف تصميم أخرى للمعيار، ولا سيما الترتيب الثنائي .
يؤدي استخدام التوقيع الاختياري U+FEFFفي بداية النصوص المشفرة بـ BOCU-1، أي تسلسل بايتات BOCU-1 ، إلى FB EE 28تغيير الحالة الأولية . بعبارة أخرى، لا يمكن حذف التوقيع ببساطة كما هو الحال في معظم أنظمة ترميز Unicode الأخرى. قد يؤدي إضافة بايت إعادة ضبط بعد التوقيع إلى تجنب هذا التأثير، لكن مواصفات BOCU-1 لا توصي بهذه الممارسة.U+0040U+FEC0FB EE 28 FF
نظريًا، يمكن لترميز UTF-1 و UTF-8 ترميز مجموعة UCS-4 الأصلية التي تحتوي على 31 بتًا حتى 10 بتات 7FFFFFFF. ويمكن لترميز BOCU-1 و UTF-16 ترميز مجموعة Unicode الحديثة من 10 بتات U+0000إلى 10 بتات . وباستثناء نقاط الترميز المحميةU+10FFFF الثلاثة عشر التي يتم ترميزها كوحدات ثمانية بتات، يمكن لترميز BOCU-1 استخدام 10 بتات.تُستخدم وحدات البايت الثمانية في ترميزات متعددة البايتات. يحتاج ترميز BOCU-1 إلى أربعة بايتات كحد أقصى، تتكون من بايت رئيسي وبايت واحد إلى ثلاثة بايتات لاحقة. تُشفّر البايتات اللاحقة الفرق المتبقي " modulo 243" (الأساس 243)، بينما يُحدد البايت الرئيسي عدد البايتات اللاحقة والفرق الأولي. بايت إعادة الضبط 0xFFغير محمي ويمكن أن يظهر كبايت لاحق.
براءة اختراع
قبل 16 نوفمبر 2022، كانت خوارزمية BOCU العامة محمية بموجب براءة الاختراع الأمريكية رقم 6,737,994، والتي تشير أيضًا إلى تطبيق BOCU-1 المحدد. [ 5 ] وقد انتهت صلاحية هذه البراءة الآن.
ذكرت شركة IBM ، التي كان يعمل لديها مخترعا BOCU-1 وقت ابتكاره، في المذكرة الفنية الخاصة بـ Unicode، أن مطوري "نسخة متوافقة تمامًا مع BOCU-1" عليهم التواصل مع IBM لطلب ترخيص مجاني. [ 6 ] يُعد BOCU-1 نظام ضغط Unicode الوحيد الموصوف على موقع Unicode الإلكتروني الذي يُعرف أنه مقيد بقيود الملكية الفكرية .
في المقابل، تقدمت شركة IBM أيضًا بطلب للحصول على براءة اختراع لـ UTF-EBCDIC ، لكنها اختارت في تلك الحالة جعل الوثائق ونظام الترميز "متاحين مجانًا لأي شخص مهتم بجعل تنسيق التحويل جزءًا من معايير UCS"، بدلاً من مطالبة المطورين بطلب ترخيص. [ 7 ]
غير مخصص لـ HTML
تحظر معايير HTML الصادرة عن W3C و WHATWG دعم ترميز BOCU-1 (وكذلك SCSU وCESU-8 وUTF-7 وEBCDIC وUTF-32) في مستندات HTML [ 8 ] [ 9 ] ، لأن HTML لم يُصمم مع مراعاة الترميزات غير المتوافقة مع ASCII. وقد تم في السابق إثبات وجود ثغرات أمنية تسمح بالهجمات الإلكترونية عبر المواقع (XSS ) نتيجةً لسوء تعامل المتصفحات مع هذه الترميزات. [ 10 ]
مراجع
- ^ ماركوس شيرير، مارك ديفيس (2006-02-04). "UTN #6: BOCU-1" . تم الاسترجاع 2008-05-18 .
- ↑ إيويل، دوغ (30 يناير 2004). "UTN رقم 14: دراسة استقصائية لضغط يونيكود" (ملف PDF) . تم الاطلاع عليه بتاريخ 13 يونيو 2008 .
- ↑ سجل تسجيل IANA لـ SCSU
- ↑ سجل تسجيل IANA لـ BOCU-1
- ↑ ديفيس وآخرون (18-05-2004). "براءة اختراع الولايات المتحدة رقم 6,737,994، "ضغط مرتب ثنائياً لليونيكود" تم الاطلاع عليه بتاريخ 28-12-2022 .
- ^ ماركوس شيرير، مارك ديفيس (2006-02-04). "UTN #6: BOCU-1" . تم الاسترجاع 2014/02/05 .
- ^ ضد أوماماهيسواران (2002-04-16). "UTR #16: UTF-EBCDIC" . تم الاسترجاع 2008-11-16 .
- ↑ "8.2.2.3. ترميز الأحرف" . معيار HTML 5.1 . اتحاد شبكة الويب العالمية (W3C).
- ↑ "12.2.3.3 ترميزات الأحرف" . معيار HTML الحي . WHATWG.
- ↑ " < meta> - HTML" . MDN Web Docs . Mozilla. مؤرشف من الأصل في 3 أكتوبر 2018.
انظر أيضاً
- يتضمن UTF-1 مقارنة بين تصميمات UTF-1 و UTF-8 وBOCU-1
- مكونات دولية لليونيكود: مكتبة يمكنها التحويل بين ترميز BOCU-1 وترميزات يونيكود الأخرى
- ضغط البيانات
- تنسيقات تحويل يونيكود
