ما هما يونيكود وUTF-8؟
يونيكود يعيّن رقماً (نقطة ترميز، تُكتب U+0627 لحرف الألف العربي) لكل محرف في كل نظام كتابة؛ وUTF-8 هو الترميز الذي يحوّل تلك الأرقام إلى بايت واحد حتى أربعة بايتات، وهو الافتراضي على الويب وفي JSON. معظم أخطاء «النص المشوّه» هي تسلسل بايتات UTF-8 يُقرأ بترميز آخر، أو نص يُعدّ بالبايتات حيث توقع البرنامج محارف.
كيفية استخدام مرمّز Unicode
- الصق أي نص — عربي أو ديفاناغاري أو رموز تعبيرية أو حروف ذات علامات صوتية.
- اختر صيغة الترميز التي تتوقعها لغتك أو نوع ملفك.
- فعّل خيار «تهريب ASCII أيضاً» (Escape ASCII too) للحصول على سلاسل مُهرَّبة بالكامل.
- انسخ النتيجة؛ وافحص جدول الأحرف بحثاً عن أي مفاجآت.
مزايا مرمّز Unicode
- \uXXXX (JavaScript/JSON/Java) و\u{…} (ES2015) ونقاط الترميز U+ وكيانات HTML الرقمية وتهريبات CSS وPython وبايتات UTF-8
- تهريب الأحرف غير ASCII فقط أو كل الأحرف
- أزواج بديلة (surrogate pairs) صحيحة للرموز التعبيرية وغيرها من الأحرف خارج المستوى الأساسي
- جدول أحرف يعرض نقطة الترميز والنظام الكتابي والفئة وبايتات UTF-8 وUTF-16
- يحسب نقاط الترميز ووحدات UTF-16 وبايتات UTF-8
مثال على مرمّز Unicode
تهريب رمز تعبيري من أجل JSON
الإدخال:
Go 🚀النتيجة:
Go \ud83d\ude80الأسئلة الشائعة حول مرمّز Unicode
لماذا يتحوّل الرمز التعبيري إلى تسلسلي \u اثنين؟
تتعامل تهريبات JSON وJavaScript الكلاسيكية مع وحدات ترميز UTF-16. وتُخزَّن الأحرف التي تتجاوز U+FFFF، مثل 🚀 (U+1F680)، كزوج بديل — \ud83d\ude80. أما صيغة \u{1F680} (ES2015) فتكتب نقطة الترميز مباشرةً.
ما الصيغة التي يقبلها JSON؟
فقط \uXXXX بأربعة أرقام سداسية عشرية بالضبط (مع الأزواج البديلة للأحرف خارج المستوى الأساسي). صيغة \u{…} صالحة في كود JavaScript المصدري لكنها غير صالحة في JSON.
ما الغرض من صيغة U+؟
هي الطريقة القياسية لتسمية نقاط الترميز في التوثيق وتقارير الأخطاء (مثل U+0645 ARABIC LETTER MEEM). وهي ليست تهريباً داخل السلاسل النصية.
ماذا يعرض جدول الأحرف؟
كل حرف غير ASCII مع نقطة الترميز والنظام الكتابي والفئة العامة وبايتات UTF-8 ووحدات UTF-16 — وهو مفيد لاكتشاف الأحرف المتشابهة شكلاً والواصلات عديمة العرض (zero-width joiners) والعلامات المركّبة (combining marks).
ملاحظات تقنية
سلاسل JavaScript النصية هي متتاليات من وحدات ترميز UTF-16، لذا تحتاج تهريبات \u الكلاسيكية إلى وحدتين للأحرف التي تتجاوز U+FFFF. تحسب الأداة الزوج البديل حسابياً (((cp − 0x10000) >> 10) + 0xD800، ((cp − 0x10000) & 0x3FF) + 0xDC00) وتوفّر صيغة \u{…} الخاصة بـ ES2015 عندما يُفضَّل تهريب واحد لكل نقطة ترميز.
المراجع
- The Unicode Standardمجموعة المحارف العالمية وأشكال ترميزها (UTF-8 وUTF-16 وUTF-32) والتطبيع وخصائص كل نقطة ترميز.
- RFC 3629: UTF-8, a transformation format of ISO 10646كيف تُرمَّز نقاط الترميز إلى بايت واحد حتى أربعة بايتات في UTF-8، وأي تسلسلات بايت غير صالحة.