الأحرف والبايتات ليست الشيء نفسه
عدد الأحرف هو عدد الحروف التي يراها الإنسان، أما البايتات فهي الحجم الذي يشغله النص عند تخزينه في الحاسوب. وقد يشغل الحرف نفسه عددًا مختلفًا من البايتات بحسب ترميز الأحرف المستخدم (أي القاعدة التي تحوّل الحروف إلى أرقام). فالحروف اللاتينية والأرقام تشغل بايتًا واحدًا في معظم الترميزات، أما الهانغول الكوري فيشغل بايتين أو 3 بايتات بحسب الترميز.
UTF-8: المعيار المعاصر
UTF-8 هو ترميز صفحات الويب ومعظم البرامج الحديثة. ويستخدم من 1 إلى 4 بايتات بحسب حجم رقم يونيكود (نقطة الترميز) (RFC 3629).
| نطاق نقاط الترميز | البايتات | أمثلة |
|---|---|---|
| U+0000 ~ U+007F | 1 | الحروف اللاتينية والأرقام والرموز الأساسية |
| U+0080 ~ U+07FF | 2 | é وñ والحروف اليونانية والسيريلية والعربية |
| U+0800 ~ U+FFFF | 3 | الهانغول والرموز الصينية والكانا |
| U+10000 ~ U+10FFFF | 4 | معظم الرموز التعبيرية والكتابات القديمة |
تقع جميع مقاطع الهانغول الجاهزة (من 가 إلى 힣، أي U+AC00~U+D7A3) في النطاق الثالث، لذا يشغل الحرف الواحد 3 بايتات في UTF-8. فمثلًا ‹안녕하세요› (مرحبًا) هي 5 أحرف و15 بايتًا. وبالمناسبة، يقع الحرف العربي في النطاق الثاني، فيشغل بايتين في UTF-8.
UTF-16
يخزّن ترميز UTF-16 المستخدم داخليًا في جافاسكربت وجافا وويندوز معظم الأحرف في بايتين، والأحرف التي تبدأ من U+10000 مثل الرموز التعبيرية في 4 بايتات (زوج بديل). ولهذا يحسب طول السلسلة في جافاسكربت الرمز التعبيري اثنين.
EUC-KR: ترميز كوري للمقاطع الجاهزة
يستند EUC-KR إلى المعيار الصناعي الكوري KS X 1001. تشغل الحروف اللاتينية والأرقام بايتًا واحدًا، وتشغل الأحرف المدرجة في KS X 1001 بايتين. ويضم KS X 1001 2350 مقطعًا شائعًا من الهانغول، و4888 رمزًا من الهانجا (الرموز الصينية)، إضافةً إلى الكانا والحروف اليونانية والسيريلية ورموز كثيرة.
المشكلة أن المعيار لا يضم سوى 2350 مقطعًا من أصل 11172 مقطعًا في الهانغول الحديث. فالمقاطع غير المدرجة مثل ‹똠› و‹햏› و‹뷁› لا يمكن تمثيلها في EUC-KR الأساسي ذي البايتين. وفي ملحق المعيار طريقة تركيب تستخدم 8 بايتات، لكن نادرًا ما تدعمها البرامج، فيتحول الحرف عادةً إلى ‹?› أو يحدث خطأ.
CP949: الترميز الموسَّع
يوسّع CP949 (رمز الهانغول الموحّد من مايكروسوفت) ترميز EUC-KR ليشمل جميع مقاطع الهانغول الحديث البالغة 11172 مقطعًا ببايتين لكل منها. ولأنه كان صفحة الترميز الكورية الافتراضية في ويندوز، فهو منتشر على نطاق واسع في المستندات والأنظمة الكورية القديمة. والقاعدة الشائعة «اللاتيني بايت واحد والهانغول بايتان» مصدرها في الغالب هذا الترميز.
متى تهمّ البايتات؟
- الرسائل القصيرة: تحدد خدمات الرسائل الكورية عادةً الرسالة القصيرة (SMS) بـ90 بايتًا وتحسب الهانغول بايتين، أي نحو 45 حرفًا كوريًا. وعند التجاوز تتحول إلى رسالة طويلة (LMS) وقد تتغير التكلفة، فتحقّق من الحد الدقيق في إرشادات خدمتك.
- حقول قواعد البيانات: عندما يُقاس الطول بالبايت كما في VARCHAR2 في أوراكل، يشغل 20 حرفًا لاتينيًا و20 حرفًا كوريًا مساحتين مختلفتين. وفي قاعدة بيانات بترميز UTF-8 يشغل المقطع الكوري الواحد 3 بايتات.
- النماذج الحكومية والمصرفية: قد تحدد النماذج المرتبطة بأنظمة قديمة حقول الإدخال بعدد البايتات.
طريقة حساب هذه الأداة
تُحسب بايتات UTF-8 بدقة من نقطة ترميز كل حرف. وبالنسبة إلى EUC-KR وCP949، تتحقق الأداة من خلال جدول الأحرف الفعلي لكل ترميز مما إذا كان كل حرف قابلًا للتمثيل ببايتين. أما الأحرف التي لا يمكن تمثيلها (الرموز التعبيرية ومقاطع الهانغول غير المدرجة وغيرها) فتُستبدل عادةً بـ‹?› ذي البايت الواحد، لذا تُحسب بايتًا واحدًا ويُعرض عددها منفصلًا. وإذا اخترت في وضع مقال التقديم أساس «بايتات (الهانغول = 2)» فسيجري العدّ وفق CP949.
تاريخ المرجع: 2026-09-23