UTF-8

UTF-8 هو معيار ترميز الأحرف المستخدم في الاتصالات الإلكترونية. تم تعريفه من قبل معيار يونيكود ، واسمه مشتق من " تنسيق تحويل يونيكود - 8 بت"  . [ 1 ] اعتبارًا من عام 2026، يتم نقل جميع صفحات الويب تقريبًا (99%) باستخدام UTF-8. [ 2 ]

يدعم UTF-8 جميع نقاط رمز Unicode الصالحة البالغ عددها 1,112,064 [ 3 ] باستخدام ترميز متغير العرض من وحدة واحدة إلى أربع وحدات رمزية من بايت واحد (8 بت).

تُشفّر رموز النقاط ذات القيم العددية المنخفضة، والتي تميل إلى الظهور بشكل متكرر، باستخدام عدد أقل من البايتات. صُمم هذا النظام للتوافق مع الإصدارات السابقة من ASCII : تُشفّر الأحرف الـ 128 الأولى من Unicode، والتي تُقابل ASCII حرفًا حرفًا، باستخدام بايت واحد له نفس القيمة الثنائية لـ ASCII، بحيث يكون الملف المُشفّر بـ UTF-8 باستخدام هذه الأحرف فقط مطابقًا لملف ASCII. تستطيع معظم البرامج المصممة لأي ترميز ASCII موسع قراءة وكتابة UTF-8، مما يُقلل من مشاكل التدويل مقارنةً بأي ترميز نصي بديل. [ 4 ] [ 5 ]

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

تاريخ

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

في يوليو 1992، كانت لجنة XoJIG التابعة لمشروع X/Open تبحث عن ترميز أفضل. قدّم ديف بروسر من مختبرات أنظمة يونكس اقتراحًا لترميز يتميز بسرعة تنفيذ أعلى، ويُدخل تحسينًا يتمثل في أن أحرف ASCII ذات 7 بتات لا تُمثل إلا نفسها؛ وأن التسلسلات متعددة البايتات لا تتضمن إلا البايتات التي تكون فيها البتة العليا مُفعّلة. وقد تم الاحتفاظ باسم " تنسيق تحويل UCS الآمن لنظام الملفات" ( FSS-UTF ) [ 6 ] ومعظم نص هذا الاقتراح لاحقًا في المواصفات النهائية. [ 7 ] [ 8 ] [ 9 ] في أغسطس 1992، قام ممثل عن مشروع X/Open التابع لشركة IBM بتعميم هذا الاقتراح على الجهات المعنية.

أدخل كين تومسون تعديلًا على نظام التشغيل Plan 9 في مختبرات بيل ، مما جعله متزامنًا ذاتيًا ، يسمح للقارئ بالبدء من أي مكان والكشف الفوري عن حدود الأحرف، على حساب انخفاض كفاءة استخدام البتات مقارنةً بالاقتراح السابق. كما تخلّى عن استخدام التحيزات التي كانت تمنع الترميزات الطويلة جدًا . [ 9 ] [ 10 ] عُرض تصميم تومسون في 2 سبتمبر 1992، على مفرش طاولة في مطعم بنيو جيرسي مع روب بايك . في الأيام التالية، قام بايك وتومسون بتنفيذه وتحديث Plan 9 لاستخدامه بالكامل، [ 11 ] ثم أبلغوا نجاحهم إلى X/Open، التي اعتمدته كمواصفة لترميز FSS-UTF . [ 9 ] عُرض ترميز UTF-8 رسميًا لأول مرة في مؤتمر USENIX في سان دييغو ، في الفترة من 25 إلى 29 يناير 1993. [ 12 ] اعتمدت فرقة عمل هندسة الإنترنت ترميز UTF-8 في سياستها المتعلقة بمجموعات الأحرف واللغات في RFC  2277 ( BCP 18) لأعمال معايير الإنترنت المستقبلية في يناير 1998، ليحل محل مجموعات الأحرف أحادية البايت مثل Latin-1 في RFCs الأقدم. [ 13 ]

كانت المعايير السابقة لترميز UTF-8، مثل RFC 2279 ، قادرة على ترميز ما يصل إلى 31 بتًا في ستة بايتات. في نوفمبر 2003، تم تقييد UTF-8 بموجب RFC 3629 ليتوافق مع قيود ترميز الأحرف UTF-16 : حيث أدى الحظر الصريح لنقاط الترميز المقابلة للأحرف البديلة العليا والدنيا إلى إزالة أكثر من 3% من التسلسلات المكونة من ثلاثة بايتات، كما أدى الانتهاء عند U+10FFFF إلى إزالة أكثر من 48% من التسلسلات المكونة من أربعة بايتات وجميع التسلسلات المكونة من خمسة وستة بايتات. [ 14 ]  

وصف

يشفر ترميز UTF-8 نقاط الترميز في بايت واحد إلى أربعة بايتات، وذلك حسب قيمة نقطة الترميز. في الجدول التالي، تُستبدل الأحرف من u إلى z ، التي يمثل كل منها رقمًا سداسيًا عشريًا، ببتاتها الأربعة المكونة لها من uuuu إلى zzzz ، بدءًا من المواضع U+ uvwxyz .

نقطة الترميز ↔ تحويل UTF-8
نقطة الترميز الأولىآخر نقطة في الكودالبايت 1البايت 2البايت 3البايت 4
U+0000U+007F0 yyyzzzz
U+0080U+07FF110 xxxyy10 yyzzzz
U+0800U+FFFF1110 wwww10 xxxxyy10 yyzzzz
U+010000U+10FFFF11110 uvv10 vvwwww10 xxxxyy10 yyzzzz

على سبيل المثال، الحرف 桁 له رمز سداسي عشري U+6841 ، وهو 0110 1000 0100 0001 في النظام الثنائي، مما يجعل ترميز UTF-8 الخاص به 11100110 10100001 10000001 .

تحتاج أول 128  نقطة ترميز (ASCII) إلى بايت واحد. أما النقاط الـ 1920 التالية،  فتحتاج إلى بايتين للترميز، وهي تغطي ما تبقى من معظم الأبجديات اللاتينية ، بالإضافة إلى امتدادات الأبجدية الصوتية الدولية (IPA) ، والأبجديات اليونانية ، والسيريلية ، والقبطية ، والأرمنية ، والعبرية ، والعربية ، والسريانية ، وأبجديات ثانا ونكو ، فضلاً عن علامات التشكيل المركبة . وتحتاج النقاط الـ 61440 المتبقية من المستوى الأساسي متعدد اللغات (BMP)، والتي تشمل معظم الأحرف الصينية واليابانية والكورية ، إلى ثلاثة بايتات . بينما تحتاج النقاط الـ 1048576 غير التابعة للمستوى الأساسي متعدد اللغات (BMP)، والتي تشمل الرموز التعبيرية (الإيموجي) ، وأحرف CJK الأقل شيوعًا ، وأحرفًا أخرى مفيدة، إلى أربعة بايتات. [ 15 ]  

يُعدّ UTF-8 ترميزًا بادئًا ، ولا داعي لقراءة ما بعد البايت الأخير من نقطة الترميز لفكّها. وعلى عكس العديد من ترميزات النصوص متعددة البايتات السابقة، مثل Shift-JIS ، فهو متزامن ذاتيًا، ما يُتيح البحث عن سلاسل أو أحرف قصيرة؛ ويمكن العثور على بداية نقطة الترميز من موضع عشوائي بالرجوع ثلاثة بايتات على الأكثر. وتعني القيم المختارة للبايتات البادئة أن ترتيب قائمة سلاسل UTF-8 يُرتبها بنفس ترتيب سلاسل UTF-32 .

ترميزات طويلة للغاية

يُطلق على استخدام صف في الجدول أعلاه لترميز نقطة رمزية أقل من "نقطة الرمز الأولى" (وبالتالي استخدام بايتات أكثر من اللازم) اسم الترميز المطول . على سبيل المثال، تُرمّز نقطة الرمز السداسية العشرية U+003F (والتي تُرمّز عادةً بالبايت الواحد 0x3F ) إلى 0xC0 0xBF باستخدام الصف الثاني. تُشكّل هذه الترميزات مشكلة أمنية لأنها تسمح لتسلسلات الأحرف بتجاوز عمليات التحقق الأمني ​​الأخرى، مثل حظر جافا سكريبت الضارة . وقد تم الإبلاغ عن العديد من الثغرات الأمنية البارزة المتعلقة بالترميزات المطول في منتجات مثل خادم الويب IIS من مايكروسوفت [ 16 ] وحاوية خادم Tomcat من أباتشي [ 17 ] . لذلك، يجب اعتبار الترميزات المطول خطأً وعدم فك ترميزها مطلقًا.../

معالجة الأخطاء

ليست كل تسلسلات البايتات صالحة لترميز UTF-8. يجب تجهيز برنامج فك ترميز UTF-8 لما يلي:

  • بايت "الاستمرار" ( 0x80 0xBF ) في بداية الحرف
  • بايت غير مكمل (أو نهاية السلسلة) قبل نهاية الحرف
  • ترميز طويل جدًا ( 0xC0 ، 0xC1 ، 0xE0 متبوعًا بأقل من 0xA0 ، أو 0xF0 متبوعًا بأقل من 0x90 )
  • تسلسل متعدد البايتات يتم فك تشفيره إلى قيمة أكبر من U+10FFFF ( 0xF4 متبوعًا بـ 0x90 أو أكبر، 0xF5 0xFF )

كانت العديد من برامج فك تشفير UTF-8 الأولى تقوم بفك تشفير هذه التسلسلات متجاهلةً البتات غير الصحيحة. ويمكن لتسلسلات UTF-8 غير الصالحة المصممة بعناية أن تتسبب في تخطيها أو إنشاء أحرف ASCII مثل NUL أو الشرطة المائلة أو علامات الاقتباس، مما يؤدي إلى ثغرات أمنية. ينص RFC 3629 على أن "تطبيقات خوارزمية فك التشفير يجب أن تحمي من فك تشفير التسلسلات غير الصالحة". [ 18 ] ويشترط معيار Unicode على برامج فك التشفير ما يلي: "... التعامل مع أي تسلسل وحدة ترميز غير صحيح كحالة خطأ. وهذا يضمن عدم تفسير أو إصدار تسلسل وحدة ترميز غير صحيح." 

كان من الشائع إطلاق استثناء أو اقتطاع السلسلة عند حدوث خطأ [ 19 ] ، لكن هذا يحوّل ما كان يمكن أن يكون أخطاءً غير ضارة (مثل "الملف غير موجود") إلى هجوم حجب الخدمة ، فعلى سبيل المثال، كانت الإصدارات المبكرة من بايثون 3.0 تُنهي عملها فورًا إذا احتوت سطر الأوامر أو متغيرات البيئة على ترميز UTF-8 غير صالح. [ 20 ] أما الآن، فإن معظم التعليمات البرمجية تستبدل كل خطأ برمز واحد (مثل U+FFFD - حرف الاستبدال ) وتستمر في فك التشفير.

تعتبر بعض برامج فك التشفير التسلسل E1,A0,20 (رمز مُقتطع من 3 بايتات متبوعًا بمسافة) خطأً واحدًا. وهذا ليس حلاً مناسبًا، إذ أن البحث عن مسافة سيؤدي إلى العثور على تلك المخفية في الخطأ. منذ إصدار Unicode 6 (أكتوبر 2010) [ 1 أوصى المعيار (الفصل 3) بـ "أفضل الممارسات" حيث يكون الخطأ إما بايتًا واحدًا متبوعًا بامتداد، أو ينتهي عند أول بايت غير مسموح به، وبالتالي فإن E1,A0,20 هو خطأ من بايتين متبوعًا بمسافة. لا يتجاوز طول الخطأ ثلاثة بايتات، ولا يحتوي أبدًا على بداية حرف صالح، وهناك   يوجد 21952  خطأً محتملاً مختلفاً. بدلاً من ذلك، تقوم العديد من برامج فك التشفير بجعل كل بايت يمثل خطأً، وفي هذه الحالة، يكون E1,A0,20 عبارة عن خطأين متبوعين بمسافة؛ يوجد الآن 128 خطأً مختلفاً فقط، مما يجعل من العملي تخزين الأخطاء في سلسلة الإخراج، [ 20 ] أو استبدالها بأحرف من ترميز قديم.

لا تُمثّل سوى مجموعة فرعية صغيرة من سلاسل البايتات الممكنة ترميز UTF-8 خاليًا من الأخطاء: فلا يمكن أن تظهر عدة بايتات، ولا يمكن أن يكون البايت ذو البت الأعلى مُفعّلاً بمفرده، وفي سلسلة عشوائية تمامًا، تبلغ احتمالية بدء حرف UTF-8 صالح بواسطة بايت ذي بت أعلى مُفعّل 1/15 فقط . يُسهّل هذا الأمر اكتشاف ما إذا كان قد تم استخدام ترميز نصي قديم عن طريق الخطأ بدلًا من UTF-8، مما يُسهّل تحويل النظام إلى UTF-8 ويُغني عن الحاجة إلى اشتراط علامة ترتيب البايتات أو أي بيانات وصفية أخرى.

الأمهات البديلات

منذ RFC 3629 (نوفمبر 2003)، لم تعد  القيم البديلة العليا والدنيا المستخدمة في UTF-16 (من U+D800 إلى U+DFFF ) قيمًا صالحة في Unicode، ويجب التعامل مع ترميزها في UTF-8 كسلسلة بايتات غير صالحة. [ 18 ] تبدأ جميع هذه الترميزات بـ 0xED متبوعًا بـ 0xA0 أو أعلى. غالبًا ما يتم تجاهل هذه القاعدة نظرًا للسماح باستخدام القيم البديلة في أسماء ملفات Windows، مما يعني وجود طريقة لتخزينها في سلسلة نصية. [ 21 ] يُطلق على UTF-8 الذي يسمح باستخدام هذه القيم البديلة اسم WTF-8 (بشكل غير رسمي) ، اختصارًا لـ "تنسيق التحويل المتذبذب" (wobbly transformation format). [ 22 ] بينما يُطلق على نوع آخر يُرمّز جميع الأحرف غير BMP كقيمتين بديلتين (ستة بايتات بدلًا من أربعة) اسم CESU-8 .

خريطة البايت

يوضح الجدول أدناه المعنى التفصيلي لكل بايت في دفق مشفر بنظام UTF-8.

0123456789أبجدهـF
0
1
2!"8دولار%و'()*+،-./
30123456789:؛<=>؟
4@أبجدهـFجيحأناجكلمشماليا
5PسؤالRSتييوVدبليوXYZ[\]^_
6`أبجدهـوزحأناجكلمنo
7صqرsتuvwxyz{|}~
8
9
أ
ب
ج2222222222222222
د2222222222222222
هـ3333333333333333
F44444444555566
حرف التحكم ASCII
حرف ASCII
بايت الاستمرار
البايت الأول من تسلسل وحدة رمز مكون من N بايت
لا يُسمح بجميع بايتات الاستمرار
غير مستخدم

علامة ترتيب البايت

إذا كانت علامة ترتيب البايتات Unicode U+FEFF في بداية ملف UTF-8، فإن البايتات الثلاثة الأولى ستكون 0xEF و 0xBB و 0xBF .

لا يشترط معيار يونيكود استخدام علامة ترتيب البايتات (BOM) في ترميز UTF-8، ولا يوصي به، ولكنه يحذر من إمكانية مصادفتها في بداية ملف مُحوَّل من ترميز آخر. [ 23 ] في حين أن نص ASCII المُرمَّز باستخدام UTF-8 متوافق مع الإصدارات السابقة من ASCII، إلا أن هذا لا ينطبق عند تجاهل توصيات معيار يونيكود وإضافة علامة ترتيب البايتات. قد تُربك علامة ترتيب البايتات البرامج غير المُهيأة لها، والتي يمكنها قبول UTF-8، مثل لغات البرمجة التي تسمح باستخدام بايتات غير ASCII في السلاسل النصية ، ولكن ليس في بداية الملف. مع ذلك، كان هناك، ولا يزال، برامج تُدرج علامة ترتيب البايتات دائمًا عند كتابة UTF-8، وترفض تفسير UTF-8 بشكل صحيح ما لم يكن الحرف الأول علامة ترتيب البايتات (أو إذا كان الملف يحتوي على ASCII فقط).

مقارنة بـ UTF-16

لفترة طويلة، دار جدل واسع حول ما إذا كان من الأفضل معالجة النصوص باستخدام ترميز UTF-16 أم UTF-8. تكمن الميزة الأساسية لترميز UTF-16 في أن واجهة برمجة تطبيقات ويندوز (Windows API) تتطلبه للوصول إلى جميع أحرف يونيكود (لم يكن ترميز UTF-8 مدعومًا بالكامل في ويندوز حتى مايو 2019). وقد دفع هذا العديد من المكتبات، مثل Qt، إلى استخدام سلاسل UTF-16، مما أدى إلى انتشار هذا الشرط إلى منصات أخرى غير ويندوز.

في بدايات استخدام يونيكود، لم تكن هناك أحرف أكبر من U+FFFF ، ونادرًا ما كان يُستخدم دمج الأحرف ، لذا كان ترميز 16 بت ثابت الحجم فعليًا. اعتقد البعض أن الترميز ثابت الحجم قد يُحسّن كفاءة المعالجة، لكن هذه المزايا تلاشت بمجرد أن أصبح ترميز UTF-16 متغير العرض أيضًا.

تشغل رموز U+0800U+FFFF ثلاثة بايتات في ترميز UTF-8، بينما تشغل بايتين فقط في ترميز UTF-16. وقد أدى ذلك إلى الاعتقاد بأن النصوص الصينية وغيرها من اللغات ستشغل مساحة أكبر في UTF-8. مع ذلك، لا يكون حجم النص أكبر إلا إذا كان عدد هذه الرموز أكبر من عدد رموز ASCII التي تشغل بايتًا واحدًا، وهذا نادر الحدوث في المستندات الواقعية نظرًا لوجود علامات التنسيق [ 24 ] ، بالإضافة إلى المسافات، والأسطر الجديدة، والأرقام، وعلامات الترقيم، والكلمات الإنجليزية، وما إلى ذلك.

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

التنفيذ والتبني

مجموعة الأحرف المُعلنة لأكثر 10  ملايين موقع إلكتروني شعبية من عام 2010 إلى عام 2021
استخدام الترميزات الرئيسية على الويب من عام ٢٠٠١ إلى ٢٠١٢، وفقًا لبيانات جوجل [ ٢٥ ] ، حيث تفوّق ترميز UTF-8 على جميع الترميزات الأخرى في عام ٢٠٠٨، وبلغت نسبته أكثر من ٦٠٪ من الويب في عام ٢٠١٢. يُعدّ UTF-8 الترميز الوحيد المُدرج صراحةً من ترميز يونيكود، بينما تُقدّم الترميزات الأخرى مجموعات فرعية فقط من يونيكود. يشمل الرقم الخاص بترميز ASCII فقط جميع صفحات الويب التي تحتوي على أحرف ASCII فقط، بغض النظر عن رأس الصفحة المُعلن.

يُعدّ ترميز UTF-8 الترميز الأكثر شيوعًا لشبكة الويب العالمية منذ عام 2008. [ 26 ] اعتبارًا من يناير 2026 يستخدم 99% من المواقع الإلكترونية التي شملها الاستطلاع ترميز UTF-8. [ 2 ] على الرغم من أن العديد من الصفحات تستخدم أحرف ASCII فقط لعرض المحتوى، إلا أن عددًا قليلًا جدًا من المواقع الإلكترونية يُعلن الآن أن ترميزها هو ASCII فقط بدلًا من UTF-8. [ 27 ] تستخدم جميع البلدان واللغات تقريبًا ترميز UTF-8 بنسبة 95% أو أكثر على الإنترنت.

تدعم العديد من المعايير ترميز UTF-8 فقط، فعلى سبيل المثال، يتطلب تبادل JSON استخدامه (بدون علامة ترتيب البايتات (BOM)). [ 28 ] كما يشترط WHATWG استخدام UTF-8 لمواصفات HTML و DOM ، حيث ينص على أن "ترميز UTF-8 هو الترميز الأنسب لتبادل Unicode ". [ 5 ] ويوصي اتحاد البريد الإلكتروني بأن تكون جميع برامج البريد الإلكتروني قادرة على عرض الرسائل وإنشائها باستخدام UTF-8. [ 29 ] [ 30 ] ويوصي اتحاد شبكة الويب العالمية (W3C) باستخدام UTF-8 كترميز افتراضي في XML وHTML (وليس فقط استخدامه، بل أيضًا تحديده في البيانات الوصفية)، "حتى عندما تكون جميع الأحرف ضمن نطاق ASCII... فاستخدام ترميزات أخرى غير UTF-8 قد يؤدي إلى نتائج غير متوقعة". يتطلب كل من الإصدار 5.3 من مواصفات HTML الصادرة عن W3C والمعيار الحي الحالي الصادر عن WHATWG استخدام UTF-8. [ 31 ] [ 32 ]

تتمتع العديد من البرامج بقدرة قراءة وكتابة ترميز UTF-8. قد يتطلب ذلك من المستخدم تغيير بعض الخيارات عن الإعدادات الافتراضية، أو قد يتطلب وجود علامة ترتيب البايتات (BOM) كأول حرف لقراءة الملف. من أمثلة البرامج التي تدعم UTF-8: مايكروسوفت وورد [ 33 ] [ 34 ] ، مايكروسوفت إكسل ( إصدار أوفيس 2003 والإصدارات الأحدث) [ 35 جوجل درايف ، ليبر أوفيس [ 36 ] ، ومعظم قواعد البيانات.

أصبحت البرامج التي تستخدم ترميز UTF-8 افتراضيًا (أي أنها تكتبه دون تغيير المستخدم للإعدادات، وتقرأه دون علامة BOM) أكثر شيوعًا منذ عام 2010. [ 37 ] برنامج المفكرة في ويندوز ، في جميع إصدارات ويندوز المدعومة حاليًا، يستخدم ترميز UTF-8 افتراضيًا دون علامة BOM (وهو تغيير عن برنامج المفكرة في ويندوز 7 )، مما يجعله متوافقًا مع معظم محررات النصوص الأخرى. [ 38 ] تتطلب بعض ملفات النظام في ويندوز 11 ترميز UTF-8 [ 39 ] دون الحاجة إلى علامة BOM، كما أن جميع الملفات تقريبًا في نظام macOS ومعظم توزيعات لينكس تتطلب ترميز UTF-8 دون علامة BOM. تشمل لغات البرمجة التي تستخدم ترميز UTF-8 افتراضيًا للإدخال والإخراج : روبي 3.0، [ 40 ] [ 41 ] وR 4.2.2، [ 42 ] وراكو وجافا 18. [ 43 ] أما بايثون 3.15 فتجعل ترميز UTF-8 هو الترميز الافتراضي للإدخال والإخراج. [ 44 ] [ 45 ] تتطلب الإصدارات السابقة خيارًا لقراءة/كتابة ترميز UTF-8. [ 46 ] اعتمدت لغة C++23 ترميز UTF-8 كصيغة ملف المصدر الوحيدة القابلة للنقل. [ 47 ]    open()

يُعدّ التوافق مع الإصدارات السابقة عائقًا كبيرًا أمام تغيير التعليمات البرمجية وواجهات برمجة التطبيقات (APIs) التي تستخدم ترميز UTF-16 إلى UTF-8، ولكن هذا التغيير جارٍ. ففي مايو 2019، أضافت مايكروسوفت إمكانية تعيين UTF-8 كصفحة ترميز لواجهة برمجة تطبيقات ويندوز، مما ألغى الحاجة إلى استخدام UTF-16. ومؤخرًا، أوصت مايكروسوفت المبرمجين باستخدام UTF-8، [ 48 ] بل وذكرت أن "UTF-16 [...] يُمثّل عبئًا فريدًا يفرضه ويندوز على التعليمات البرمجية التي تستهدف منصات متعددة". [ 4 ] ويستخدم كلٌّ من نوع String primitive الافتراضي في لغات البرمجة Go ، [ 49 ] وJulia و Rust و Swift (منذ الإصدار 5)، [ 50 ] و PyPy [ 51 ] ترميز UTF-8 داخليًا في جميع الحالات. يستخدم بايثون (منذ الإصدار 3.3) ترميز UTF-8 داخليًا لتوسيعات واجهة برمجة تطبيقات بايثون C [ 52 ] [ 53 ] ، وأحيانًا للسلاسل النصية [ 52 ] [ 54 ] . ومن المخطط أن يقوم إصدار مستقبلي من بايثون بتخزين السلاسل النصية بترميز UTF-8 افتراضيًا. [ 55 ] [ 56 ] تستخدم الإصدارات الحديثة من مايكروسوفت فيجوال ستوديو ترميز UTF-8 داخليًا. [ 57 ] تدعم جميع إصدارات مايكروسوفت SQL Server المدعومة حاليًا ترميز UTF-8 للاستيراد والتصدير، بالإضافة إلى أن جميع الإصدارات ذات الدعم الأساسي، أي منذ SQL Server 2019، تدعم ترميز UTF-8 داخليًا، ويؤدي استخدامه إلى زيادة السرعة بنسبة 35%، و"انخفاض متطلبات التخزين بنسبة تقارب 50%". [ 58 ]

تستخدم لغة جافا داخليًا ترميز UTF-16 لنوع charالبيانات، وبالتالي، Characterللفئات String[ 59 ] ،StringBuffer ولكنها تستخدم "UTF-8 المعدل" للإدخال /الإخراج ، وهو مطابق لترميز CESU-8، باستثناء أن الحرف الفارغ U+0000 يستخدم ترميزًا ثنائي البايت طويلًا 0xC0 0x80 بدلًا من 0x00 فقط . [ 60 ] لا تحتوي سلاسل UTF-8 المعدلة أبدًا على أي بايتات فارغة فعلية، ولكنها قد تحتوي على جميع نقاط ترميز Unicode بما في ذلك U+0000 ، [ 61 ] مما يسمح بمعالجة هذه السلاسل (مع بايت فارغ مُلحق) بواسطة دوال السلاسل التقليدية المنتهية بـ null . تقرأ لغة جافا وتكتب ترميز UTF-8 العادي إلى الملفات والجداول، [ 62 ] لكنها تستخدم ترميز UTF-8 المعدل لتسلسل الكائنات ، [ 63 ] [ 64 ] لواجهة جافا الأصلية ، [ 65 ] ولتضمين السلاسل الثابتة في ملفات فئات جافا . [ 61 ] كما يستخدم تنسيق DEX المستخدم في تطبيقات أندرويد (المُعرَّف بواسطة دالفيك ) نفس ترميز UTF-8 المعدل لتمثيل قيم السلاسل النصية. [ 66 ] وتستخدم لغة Tcl أيضًا نفس ترميز UTF-8 المعدل [ 67 ] الذي تستخدمه جافا للتمثيل الداخلي لبيانات يونيكود، لكنها تستخدم ترميز CESU-8 الصارم للبيانات الخارجية. 

تستخدم لغة البرمجة Raku (المعروفة سابقًا باسم Perl 6) ترميزًا افتراضيًاutf-8 للإدخال والإخراج ( ويدعمه Perl 5 أيضًا ) ؛ مع ذلك، فإن هذا الخيار في Raku يستلزم أيضًا "التطبيع إلى Unicode NFC (النموذج القياسي للتطبيع) . في بعض الحالات، قد يرغب المستخدم في ضمان عدم إجراء أي تطبيع؛ ولتحقيق ذلك، utf8-c8يمكن استخدام " ". [ 68 ] يُعدّ متغير UTF-8 Clean-8 ، الذي تُنفّذه Raku، مُشفّرًا/مُفكّكًا يحافظ على البايتات كما هي (حتى تسلسلات UTF-8 غير الصالحة) ويسمح بتوليف الرسوم البيانية للنموذج القياسي. [ 69 ]

في الإصدار الثالث من لغة البرمجة بايثون، يُعامل كل بايت من سلسلة بايتات UTF-8 غير الصالحة كخطأ (انظر أيضًا التغييرات مع وضع UTF-8 الجديد في بايثون 3.7 [ 70 ] ). ينتج عن ذلك 128 خطأً محتملاً. تم تطوير إضافات تسمح بتحويل أي تسلسل بايتات يُفترض أنه UTF-8 إلى UTF-16 أو UTF-32 دون فقدان أي بيانات، وذلك بترجمة بايتات الخطأ الـ 128 المحتملة إلى 128 نقطة ترميز محجوزة، ثم تحويل نقاط الترميز هذه مرة أخرى إلى بايتات خطأ لإخراج UTF-8. النهج الأكثر شيوعًا هو ترجمة الرموز إلى U+DC80 ... U+DCFF، وهي قيم بديلة منخفضة (لاحقة) وبالتالي UTF-16 "غير صالحة"، كما هو مستخدم في PEP 383 الخاص ببايثون (أو نهج "الهروب البديل"). [ 20 ] يدعم NumPy الإصدار 2.0، وتنسيقات ملفاته، ترميز UTF-8 (بإضافة StringDType له). [ 71 ] هناك ترميز آخر يُسمى MirBSD OPTU-8/16 يحولها إلى U+EF80 ... U+EFFF في منطقة استخدام خاصة . [ 72 ] في كلتا الطريقتين، تُشفّر قيمة البايت في البتات الثمانية الأدنى من نقطة ترميز الإخراج. هذه الترميزات ضرورية لضمان بقاء ترميز UTF-8 غير الصالح بعد ترجمته إلى UTF-16 المستخدم داخليًا في بايثون، ثم العودة منه، ولأن أسماء ملفات يونكس قد تحتوي على ترميز UTF-8 غير صالح، فإن هذا ضروري لعمل هذه العملية. [ 73 ]

تستخدم معظم أنظمة الملفات في الأنظمة الشبيهة بنظام يونكس ترميز UTF-8 لأسماء الملفات، حيث يتم البحث عن أسماء الملفات بمقارنة بايتات أسماء الملفات. يدعم نظاما الملفات ext4 في لينكس و APFS في macOS البحث عن أسماء الملفات بغض النظر عن حالة الأحرف، مما يتطلب تحديد ترميز أسماء الملفات؛ يدعم ext4 ترميز UTF-8 ويستخدمه افتراضيًا، [ 74 ] بينما يتطلب APFS ترميز UTF-8. [ 75 ] يستخدم نظام الملفات HFS Plus الأقدم من أبل ترميز UTF-16 لأسماء الملفات، ولكنه يستخدم UTF-8 في الروابط الرمزية . [ 76 ] يستخدم نظام الملفات NTFS في ويندوز ترميز UTF-16 لأسماء الملفات.

المعايير

الاسم الرسمي للترميز هو `unicode.com` UTF-8، وهو التهجئة المستخدمة في جميع وثائق اتحاد يونيكود. يُشترط استخدام الواصلة (-) ولا يُسمح باستخدام المسافات. ومن الأسماء الأخرى المستخدمة:

توجد عدة تعريفات حالية لـ UTF-8 في وثائق المعايير المختلفة:

  • RFC 3629 / STD 63 (2003)، الذي يحدد UTF-8 كعنصر قياسي في بروتوكول الإنترنت 
  • يحدد RFC 5198 تقنية UTF-8 NFC لتبادل الشبكة (2008). 
  • ISO/IEC 10646:2020/Amd 1:2023 [ 87 ]
  • معيار يونيكود، الإصدار 17.0.0 (2025)

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

  • معيار يونيكود، الإصدار 2.0 ، الملحق أ (1996)
  • ISO/IEC 10646-1:1993 التعديل 2 / الملحق R (1996)
  • RFC 2044 (1996) 
  • RFC 2279 (1998) 
  • معيار يونيكود، الإصدار 3.0 ، §2.3 (2000) بالإضافة إلى التصحيح رقم 1  : أقصر شكل UTF-8 (2000)
  • الملحق رقم 27 من معيار يونيكود: يونيكود 3.1 (2001) [ 88 ]
  • معيار يونيكود، الإصدار 5.0 (2006) [ 89 ]
  • معيار يونيكود، الإصدار 6.0 (2010) [ 1 ]

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

انظر أيضاً

مراجع

  1. 1 2 3 يونيكود® 6.0.0: تاريخ الإصدار: 11 أكتوبر 2010 (إعلان) (الإصدار 6.0.0 ). ماونتن فيو، كاليفورنيا، الولايات المتحدة الأمريكية: اتحاد يونيكود . ISBN  978-1-936213-01-6أُرشف من المصدر الأصلي بتاريخ 28 يوليو 2025. تم الاطلاع عليه بتاريخ 23 أغسطس 2025 .
  2. 1 2 "دراسة استقصائية حول استخدام ترميزات الأحرف مصنفة حسب الترتيب" . W3Techs . يوليو 2026. تم الاطلاع عليه بتاريخ 18 يوليو 2026 .
  3. "التوافق" . يونيكود 16.0.0: المواصفات الأساسية / الفصل 3 (الطبعة 6.0.0 ). ماونتن فيو، كاليفورنيا، الولايات المتحدة الأمريكية: اتحاد يونيكود . 3.9 أشكال ترميز يونيكود. ISBN  978-1-936213-34-4أُرشف من الأصل بتاريخ 1 يوليو 2025. تم الاطلاع عليه بتاريخ 23 أغسطس 2025. كل صيغة ترميز تُطابق نقاط ترميز يونيكود من U+0000 إلى U+D7FF ومن U+E000 إلى U+10FFFF
  4. 1 2 "دعم ترميز UTF-8 في Microsoft GDK" . Microsoft Learn . Microsoft Game Development Kit (GDK) . تم الاطلاع عليه بتاريخ 5 مارس 2023 .
  5. 1 2 "معيار الترميز" . encoding.spec.whatwg.org . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  6. "تنسيق التحويل الآمن لنظام الملفات UCS (FSS-UTF) - المواصفات الأولية لـ X/Open" (PDF) . unicode.org . 
  7. "الملحق F. تنسيق تحويل UCS الآمن لنظام الملفات FSS-UTF" (ملف PDF) . معيار يونيكود 1.1 . مؤرشف (ملف PDF) من الأصل بتاريخ 2016-06-07 . تم الاطلاع عليه بتاريخ 2016-06-07 .
  8. ويستلر، كينيث (12 يونيو 2001). "FSS-UTF، UTF-2، UTF-8، وUTF-16" . قائمة بريد يونيكود (قائمة بريدية). مؤرشف من الأصل في 7 يونيو 2016. تم الاطلاع عليه في 20 نوفمبر 2025 .
  9. 1 2 3 بايك، روب (30 أبريل 2003). "تاريخ UTF-8" . تم الاسترجاع في 7 سبتمبر 2012 .
  10. في ذلك الوقت، كانت عملية الطرح أبطأ من منطق البتات على العديد من أجهزة الكمبيوتر، وكانت السرعة تعتبر ضرورية للقبول.
  11. ^ بايك، روب. طومسون، كين (1993). "مرحبًا بالعالم أو Καлημέρα κόσμε أو こんにちは 世界" (PDF) . وقائع مؤتمر USENIX في شتاء عام 1993 .
  12. "وقائع مؤتمر USENIX الشتوي لعام 1993" . www.usenix.org . تاريخ الاطلاع: 20 نوفمبر 2025 .
  13. ألفستراند، هارالد ت. (يناير 1998). سياسة IETF بشأن مجموعات الأحرف واللغات . IETF . doi : 10.17487/RFC2277 . BCP 18. RFC 2277 .
  14. بايك، روب (2012-09-06). "أكملت UTF-8 عامها العشرين أمس" . مؤرشف من الأصل في 2012-11-30 . تم الاطلاع عليه في 2012-09-07 .
  15. لوندي، د. كين (9 يناير 2022). "قائمة أفضل عشرة لعام 2022: لماذا ندعم نقاط الكود التي تتجاوز أفضل ممارسات الإدارة؟" . ميديوم . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  16. مارين، مارفن (17 أكتوبر 2000). تحليل ثغرات يونيكود في نظام ويندوز إن تي . اختراق مجلدات خادم الويب. معهد سانس (تقرير). أسئلة وأجوبة حول البرامج الضارة. MS00-078. مؤرشف من الأصل في 27 أغسطس 2014.
  17. "CVE-2008-2938" . قاعدة بيانات الثغرات الأمنية الوطنية (nvd.nist.gov) . المعهد الوطني الأمريكي للمعايير والتكنولوجيا . 2008. تاريخ الاسترجاع: 20 نوفمبر 2025 .
  18. 1 2 يرجو، ف. (نوفمبر 2003). UTF-8، صيغة تحويل لمعيار ISO 10646. IETF . doi : 10.17487 /RFC3629 . STD 63. RFC 3629. تم الاطلاع عليه بتاريخ 20 أغسطس 2020 .
  19. "DataInput (Java Platform SE 8 )" . docs.oracle.com . تم الاطلاع عليه بتاريخ 2025-11-20 .
  20. 1 2 3 فون لويس، مارتن (22-04-2009). "بايتات غير قابلة للفك في واجهات أحرف النظام" . مؤسسة برمجيات بايثون . PEP 383. تم الاسترجاع في 20-11-2025 .
  21. "PEP 529 - تغيير ترميز نظام ملفات ويندوز إلى UTF-8 | peps.python.org" . مقترحات تحسين بايثون (PEPs) . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  22. "ترميز WTF-8" . wtf-8.codeberg.page . تم الاطلاع عليه بتاريخ 30-11-2025 .
  23. "الفصل 2" (ملف PDF) ، معيار يونيكود - الإصدار 15.0.0 ، صفحة 39  
  24. ^ رادزيفيلوفسكي ، بافل. جالكا، ياكوف؛ نوفغورودوف، سلافا. "بيان UTF-8 في كل مكان" . UTF-8 في كل مكان . تم الاسترجاع في 25 مارس 2026 .
  25. ديفيس، مارك (2012-02-03). "يونيكود يغطي أكثر من 60 % من الويب" . مدونة جوجل الرسمية . مؤرشف من الأصل في 2018-08-09 . تم الاطلاع عليه في 2020-07-24 . 
  26. ديفيس، مارك (5 مايو 2008). "الانتقال إلى يونيكود 5.1" . مدونة جوجل الرسمية . تم الاطلاع عليه بتاريخ 13 مارس 2023 . 
  27. "إحصائيات الاستخدام وحصة السوق لرموز ASCII للمواقع الإلكترونية" . W3Techs . ديسمبر 2025. تاريخ الاسترجاع: 17 ديسمبر 2025 .
  28. براي، تيم (ديسمبر 2017). براي، تيم (محرر). تنسيق تبادل البيانات JSON (تدوين كائنات جافا سكريبت) . IETF. doi : 10.17487/RFC8259 . RFC 8259. تاريخ الاسترجاع: 16 فبراير 2018 .
  29. "استخدام الأحرف الدولية في البريد الإلكتروني عبر الإنترنت" . اتحاد البريد الإلكتروني عبر الإنترنت. 1998-08-01. مؤرشف من الأصل في 2007-10-26 . تم الاطلاع عليه في 2007-11-08 .
  30. "معيار الترميز" . encoding.spec.whatwg.org . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  31. 1 2 "تحديد ترميز الأحرف للمستند" . HTML 5.3 (تقرير). اتحاد شبكة الويب العالمية . 28 يناير 2021. تم الاطلاع عليه بتاريخ 6 يناير 2026 . 
  32. "تحديد ترميز الأحرف للمستند" . معيار HTML . WHATWG . 17 ديسمبر 2025. تم الاطلاع عليه بتاريخ 6 يناير 2026 .
  33. "اختر ترميز النص عند فتح الملفات وحفظها" . دعم مايكروسوفت . تم الاطلاع عليه بتاريخ 1 نوفمبر 2021 .
  34. "تصدير ملف UTF-8 من Word " . support.3playmedia.com . 14 مارس 2023..txt
  35. أبهيناف، أنكيت؛ شو، جازلين (13 أبريل 2020). "كيفية فتح ملف UTF-8 في برنامج Excel دون حدوث تحويل خاطئ للأحرف في اللغتين اليابانية والصينية على نظامي التشغيل Mac وWindows؟" . مجتمع دعم Microsoft . تم الاطلاع عليه بتاريخ 1 نوفمبر 2021 .CSV
  36. "حفظ ملف CSV بصيغة UTF-8" . RO CSVI . LibreOffice . تم الاطلاع عليه بتاريخ 20-05-2025 .
  37. غالاوي، مات (أكتوبر 2012). "ترميز الأحرف لمطوري iOS؛ أو، UTF-8 ماذا الآن؟" . www.galloway.me.uk . تاريخ الاسترجاع 2021-01-02 . ... في الواقع، عادةً ما تفترض استخدام UTF-8 لأنه الترميز الأكثر شيوعًا. 
  38. " برنامج المفكرة في ويندوز 10 يحصل على دعم أفضل لترميز UTF-8" . BleepingComputer . تاريخ الاطلاع: 24 مارس 2021. تقوم مايكروسوفت الآن بحفظ ملفات النصوص الجديدة افتراضيًا بترميز UTF-8 بدون علامة ترتيب البايتات (BOM)، كما هو موضح أدناه. 
  39. ↑ "تخصيص قائمة ابدأ في ويندوز 11 " . docs.microsoft.com . تم الاطلاع عليه بتاريخ 29-06-2021 . تأكد من أن ملف LayoutModification.json يستخدم ترميز UTF-8. 
  40. "تعيين القيمة الافتراضية لـ Encoding.default_external إلى UTF-8 على نظام ويندوز" . نظام تتبع مشكلات روبي (bugs.ruby-lang.org) . روبي الرئيسي. الميزة رقم 16604. تم الاطلاع بتاريخ 1 أغسطس 2022 . 
  41. "الميزة رقم 12650: استخدام ترميز UTF-8 لمتغيرات البيئة على نظام ويندوز" . نظام تتبع مشكلات روبي . روبي الرئيسي . تم الاطلاع عليه بتاريخ 1 أغسطس 2022 .
  42. "ميزات جديدة في R 4.2.0" . مدونو R. مدونة الأنهار القافزة. 1 أبريل 2022. تاريخ الاسترجاع: 1 أغسطس 2022 .  
  43. "UTF-8 افتراضيًا" . openjdk.java.net . JEP 400. تم الاسترجاع في 30-03-2022 .
  44. "ما الجديد في بايثون 3.15" . وثائق بايثون . تم الاطلاع عليه بتاريخ 23 ديسمبر 2025 .
  45. "اجعل وضع UTF-8 هو الوضع الافتراضي" . peps.python.org . PEP 686. تم الاطلاع عليه بتاريخ 26-07-2023 . 
  46. "إضافة وضع UTF-8 جديد" . peps.python.org . PEP 540. تم الاطلاع عليه بتاريخ 23-09-2022 . 
  47. دعم ترميز UTF-8 كترميز ملف مصدر محمول (PDF) . open-std.org (تقرير). 2022. ص2295r6.
  48. "استخدام صفحات ترميز UTF-8 في تطبيقات ويندوز" . مايكروسوفت ليرن . 20 أغسطس 2024. تاريخ الاسترجاع: 24 سبتمبر 2024 .
  49. "تمثيل الكود المصدري" . مواصفات لغة البرمجة Go . golang.org (تقرير) . تم الاطلاع عليه بتاريخ 10 فبراير 2021 .
  50. تساي، مايكل ج. (21 مارس 2019). "سلسلة UTF-8 في Swift 5" (منشور مدونة) . تم الاطلاع عليه بتاريخ 15 مارس 2021 . 
  51. ماتيب (24 مارس 2019). "إصدار PyPy v7.1؛ يستخدم الآن ترميز UTF-8 داخليًا لسلاسل Unicode" . مدونة حالة PyPy . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  52. 1 2 "تمثيل السلاسل المرن" . Python.org . PEP 393. تم الاطلاع عليه بتاريخ 18-05-2022 . 
  53. "هياكل الكائنات الشائعة" . وثائق بايثون . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  54. "كائنات وبرامج ترميز يونيكود" . وثائق بايثون . تم الاطلاع بتاريخ 19 أغسطس 2023. يتم إنشاء تمثيل UTF-8 عند الطلب وتخزينه مؤقتًا في كائن يونيكود.
  55. "PEP 623 – إزالة wstr من Unicode" . Python.org . تم الاطلاع عليه بتاريخ 21-11-2020 .  
  56. ووترز، توماس (11 يوليو 2023). "إصدار بايثون 3.12.0 بيتا 4" . بايثون إنسايدر (منشور مدونة) . تم الاطلاع عليه بتاريخ 26 يوليو 2023. تمت إزالة العناصر المهملة وأعضاء تطبيق C لكائنات يونيكود، وفقًا لـ PEP 623.wstrwstr_length
  57. "validate-charset (التحقق من توافق الأحرف)" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 19-07-2021 . يستخدم Visual Studio ترميز UTF-8 كترميز داخلي للأحرف أثناء التحويل بين مجموعة الأحرف المصدرية ومجموعة أحرف التنفيذ.
  58. "تقديم دعم UTF-8 لـ SQL Server" . techcommunity.microsoft.com . 2019-07-02 . تم الاطلاع عليه بتاريخ 2021-08-24 .
  59. "Character (Java SE 24 & JDK 24)" . شركة أوراكل . 2025. تم الاطلاع عليه بتاريخ 8 أبريل 2025 .
  60. "وثائق Java SE للواجهة java.io.DataInput، القسم الفرعي الخاص بـ UTF-8 المعدل" . شركة أوراكل . 2015. تاريخ الاسترجاع: 16 أكتوبر 2015 .
  61. 1 2 "مواصفات آلة جافا الافتراضية، القسم 4.4.7: بنية CONSTANT_Utf8_info" . شركة أوراكل . 2015. تم الاطلاع عليه بتاريخ 16-10-2015 .
  62. InputStreamReader وOutputStreamWriter
  63. "مواصفات تسلسل كائنات جافا، الفصل 6: بروتوكول تدفق تسلسل الكائنات، القسم 2: عناصر التدفق" . شركة أوراكل . 2010. تم الاطلاع عليه بتاريخ 16-10-2015 .
  64. DataInput وDataOutput
  65. "مواصفات واجهة جافا الأصلية، الفصل 3: أنواع JNI وهياكل البيانات، القسم: سلاسل UTF-8 المعدلة" . شركة أوراكل . 2015. تم الاطلاع عليه بتاريخ 16-10-2015 .
  66. "الفن ودالفيك" . مشروع أندرويد مفتوح المصدر . مؤرشف من الأصل بتاريخ 26-04-2013 . تم الاطلاع عليه بتاريخ 09-04-2013 .
  67. "UTF-8 بت بت" . ويكي تكلير . 28-02-2001 . تم الاطلاع عليه بتاريخ 03-09-2022 .
  68. "الترميز" . وثائق راكو . تم الاطلاع عليه بتاريخ 2025-11-20 .
  69. "يونيكود" . وثائق راكو . تم الاطلاع عليه بتاريخ 2025-11-20 .
  70. "PEP 540 - إضافة وضع UTF-8 جديد" . مقترحات تحسين بايثون (PEPs) . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  71. "NEP 55 - إضافة نوع بيانات سلسلة UTF-8 متغيرة العرض إلى NumPy" . مقترحات تحسين NumPy . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  72. ^ "RTFM optu8to16(3)، optu8to16vis(3)" . مير بي إس دي . تم الاسترجاع 2025/11/20 .
  73. ديفيس، مارك ؛ سويجنارد، ميشيل (2014). "3.7 تمكين التحويل بدون فقدان للبيانات" . اعتبارات أمان يونيكود . التقرير الفني رقم 36 ليونيكود . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  74. "معلومات عامة عن نظام الملفات Ext4" . وثائق نواة لينكس . تم الاطلاع بتاريخ 20 نوفمبر 2025 .
  75. "الأسئلة الشائعة" . دليل نظام ملفات أبل . أبل . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  76. "ملاحظة فنية TN1150: تنسيق وحدة التخزين HFS Plus" . أبل . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  77. "معيار الترميز § 4.2. الأسماء والتسميات" . WHATWG . تم الاطلاع عليه بتاريخ 29-04-2018 .
  78. "مجموعات الأحرف" . هيئة أرقام الإنترنت المخصصة . 23-01-2013 . تم الاسترجاع في 08-02-2013 .
  79. "BOM" . suikawiki (باللغة اليابانية). مؤرشف من الأصل بتاريخ 17-01-2009.
  80. ديفيس، مارك . "أشكال يونيكود" . آي بي إم . مؤرشف من الأصل في 2005-05-06 . تم الاسترجاع في 2013-09-18 .
  81. ليفيو (2014-02-07). "صفحة ترميز UTF-8 رقم 65001 في ويندوز 7 - الجزء الأول" . تم الاطلاع عليه بتاريخ 2018-01-30 . سابقًا، في نظام التشغيل XP (وربما Vista أيضًا، وإن لم يتم التحقق من ذلك)، لم تكن حلقات التكرار تعمل أثناء تفعيل صفحة الترميز رقم 65001.
  82. "MySQL :: دليل مرجعي لـ MySQL 8.0 :: 10.9.1 مجموعة الأحرف utf8mb4 (ترميز يونيكود UTF-8 ذو 4 بايت)" . دليل مرجعي لـ MySQL 8.0 . شركة أوراكل . تم الاطلاع عليه بتاريخ 14 مارس 2023 .  
  83. "MySQL :: دليل مرجعي لـ MySQL 8.0 :: 10.9.2 مجموعة الأحرف utf8mb3 (ترميز يونيكود UTF-8 ثلاثي البايت)" . دليل مرجعي لـ MySQL 8.0 . شركة أوراكل . تم الاطلاع عليه بتاريخ 24 فبراير 2023 .  
  84. "دليل دعم عولمة قواعد البيانات" . docs.oracle.com . تم الاطلاع عليه بتاريخ 16-03-2023 .
  85. هود، دوغ (10 يوليو 2025). "لماذا تُعدّ مجموعة أحرف قاعدة البيانات مهمة؟" . blogs.oracle.com . تاريخ الاسترجاع: 20 نوفمبر 2025 .
  86. "مجموعة رموز HP PCL | مدونة دعم لغة التحكم بالطابعة (PCL وPXL)" . ١٩ فبراير ٢٠١٥. مؤرشف من الأصل في ١٩ فبراير ٢٠١٥. تم الاطلاع عليه في ٣٠ يناير ٢٠١٨ .
  87. "ISO/IEC 10646:2020/Amd 1:2023" . المنظمة الدولية للمقاييس . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  88. "UAX #27: Unicode 3.1" . www.unicode.org . تم الاطلاع عليه بتاريخ 20 نوفمبر 2025 .
  89. معيار يونيكود، الإصدار 5.0 §3.9–§3.10 الفصل 3 ، 2006.