برمجياتقراءة دقيقتين

لماذا يشغل النص العربي ضعف مساحة الإنجليزي تقريبًا في ترميز UTF-8

المغزى

الحقول والرسائل والفهارس المحسوبة بالـ bytes لا بالحروف تعامل العربية بنصف السعة، وهذا تصميم الترميز نفسه لا خطأ في الإعداد.

كلمة “مرحبا” وكلمة “Salam” من خمسة حروف لكل منهما. لكن الأولى تشغل 10 bytes في ترميز UTF-8، والثانية 5 فقط. وتشغل عبارة “السلام عليكم ورحمة الله وبركاته”، وهي 31 محرفًا، 58 byte.

السبب أن UTF-8 ترميز متغير الطول. حروف ASCII اللاتينية تأخذ byte واحدًا، والحروف العربية تأخذ 2، ورمز ﷺ يأخذ 3، والإيموجي يأخذ 4. لذلك يشغل النص العربي نحو ضعف مساحة الإنجليزي، لا بسبب خطأ في قاعدة البيانات، بل بحكم تصميم الترميز.

أين يظهر الفرق

يظهر أولًا في أي نظام يحسب الحدود بالـ bytes لا بالحروف. الحقل الذي سقفه 255 byte يتسع لـ 255 حرفًا لاتينيًا، لكنه لا يتسع إلا لـ 127 حرفًا عربيًا.

ويظهر ثانيًا في الرسائل النصية القصيرة SMS. فالرسالة اللاتينية تتسع لـ 160 محرفًا بترميز GSM-7، بينما تُرسل العربية بترميز UCS-2، فتتسع الرسالة لـ 70 محرفًا فقط.

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

جاء الحديث عن الموضوع مع اقتراح اسمه UTF-8000 وصل إلى الصفحة الأولى في Hacker News في 21 سبتمبر 2026 بـ 130 نقطة. يمدّ الاقتراح ترميز UTF-8 ليقبل عددًا غير محدود من الـ bytes دون إضافة حالات خاصة جديدة. لكن صفحته تذكر صراحة أنه مشروع مستقل للمتعة، غير معتمد من Unicode Consortium، ولا يغيّر كلفة العربية بأي شكل.

القيمة إذن ليست في الاقتراح، بل في التذكير بآلية يتعامل معها كثير من المطورين كتفصيل ثانوي. ففي المنتجات العربية، يصبح اختيار وحدة القياس، حروفًا أم bytes، قرارًا يحدد كم من النص يتسع له كل حقل فعليًا.

المصادر

  1. اقتراح UTF-8000
  2. مواصفة UTF-8 (RFC 3629)
  3. ترميز GSM 03.38 للرسائل النصية (Wikipedia)

من عدد الاثنين 10 ربيع الآخر - 21 سبتمبر

أخبار ذات صلة

أخبار الاثنين 10 ربيع الآخر - 21 سبتمبر