اكتشاف الأحرف

يُعدّ اكتشاف ترميز الأحرف ، أو اكتشاف مجموعة الأحرف ، أو اكتشاف صفحة الترميز، عملية تخمين ترميز الأحرف لسلسلة من البايتات التي تُمثّل نصًا. وتُعرف هذه التقنية بأنها غير موثوقة [ 1 ] ، ولا تُستخدم إلا عندما تكون بيانات وصفية مُحدّدة ، مثل رأس HTTP Content-Type، غير متوفرة، أو يُفترض أنها غير موثوقة.

تتضمن هذه الخوارزمية عادةً تحليلًا إحصائيًا لأنماط البايتات؛ [ 2 ] ويمكن استخدام هذا التحليل الإحصائي أيضًا للكشف عن اللغة . [ 2 ] هذه العملية ليست مضمونة النتائج لأنها تعتمد على البيانات الإحصائية. [ 1 ]

بشكل عام، يؤدي الكشف غير الصحيح عن ترميز الأحرف إلى حدوث تشوهات في الأحرف ، وذلك بسبب تفسير بايتات الأحرف على أنها تنتمي إلى مجموعة معينة - المجموعة التي تم الكشف عنها بشكل خاطئ - بينما هي في الواقع تنتمي إلى مجموعة مختلفة تمامًا. [ 3 ] [ 4 ]

من الحالات النادرة التي يعمل فيها اكتشاف ترميز الأحرف بكفاءة عالية هو اكتشاف ترميز UTF-8 . [ 5 ] ويعود ذلك إلى النسبة الكبيرة من تسلسلات البايتات غير الصالحة في UTF-8، [ ملاحظة 1 ] مما يجعل من المستبعد للغاية أن يجتاز النص المكتوب بأي ترميز آخر، والذي يستخدم بايتات ذات بت عالي مُفعّل، اختبار صلاحية UTF-8. [ 5 ] مع ذلك، فإن إجراءات اكتشاف ترميز الأحرف المصممة بشكل سيئ لا تُجري اختبار UTF-8 الموثوق أولًا، وقد تُقرر أن UTF-8 هو ترميز آخر. على سبيل المثال، قد تعرض مواقع الويب المكتوبة بترميز UTF-8 والتي تحتوي على اسم مدينة ميونخ الألمانية "München" فقط، وذلك لأن البرنامج قرر أن الترميز هو ISO-8859-1 أو Windows-1252 قبل (أو حتى بدون) إجراء اختبار للتأكد من أنه UTF-8.

يُعدّ ترميز UTF-16 موثوقًا به إلى حدٍّ كبير في الكشف نظرًا لكثرة أسطر جديدة (U+000A) ومسافات (U+0020) التي يجب العثور عليها عند تقسيم البيانات إلى كلمات من 16 بت، بالإضافة إلى أعداد كبيرة من بايتات NUL في المواقع الزوجية أو الفردية. يجب التحقق من الأحرف الشائعة، بالاعتماد على اختبار للتأكد من صحة النص. يفشل ترميز UTF-16 في هذه الحالة: سيكتشف نظام التشغيل Windows عبارة " Bush hid the facts " (بدون سطر جديد) المكتوبة بترميز ASCII خطأً على أنها ترميز UTF-16LE صيني ، نظرًا لتطابق جميع أزواج البايتات مع أحرف Unicode المخصصة في UTF-16LE.

يُعدّ اكتشاف ترميز الأحرف غير موثوق به بشكل خاص في أوروبا، في بيئة تستخدم ترميزات ISO-8859 المختلطة. هذه ترميزات ثمانية بت متقاربة للغاية، تتشارك في تداخل في نصفها السفلي مع ASCII، وجميع ترتيبات البايتات صالحة. لا توجد طريقة تقنية للتمييز بين هذه الترميزات، ويعتمد التعرف عليها على تحديد خصائص اللغة، مثل ترددات الأحرف أو التهجئة.

نظراً لعدم موثوقية الكشف الاستدلالي، يُفضّل تصنيف مجموعات البيانات بشكل صحيح باستخدام الترميز المناسب (انظر تحديد ترميز أحرف المستند ). مع أن ترميز UTF-8 وUTF-16 سهل الكشف، إلا أن بعض الأنظمة تتطلب ترميز UTF لتصنيف المستند صراحةً بعلامة ترتيب البايتات (BOM) في بدايته.

انظر أيضاً

ملحوظات

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

مراجع

  1. 1 2 "PHP: mb_detect_encoding - Manual" . www.php.net . تم الاطلاع عليه بتاريخ 12-11-2024 .
  2. 1 2 كيم، سيونغ هو؛ بارك، جونغ سو (2007). الكشف التلقائي عن ترميز الأحرف واللغة (ملف PDF) (أطروحة). جامعة ستانفورد .
  3. كينغ، ريتشي (2012). "هل سيصبح يونيكود قريبًا الشفرة العالمية؟ [البيانات]". مجلة IEEE Spectrum . 49 (7): 60. doi : 10.1109/MSPEC.2012.6221090 .
  4. تشين، ريموند (2019-07-01). "برنامج لكشف الأخطاء البرمجية الناتجة عن تفسير ملف مُشفّر بنظام UTF-8 بشكل خاطئ على أنه صفحة ترميز 1252" . ذا أولد نيو ثينغ . تاريخ الاسترجاع: 2025-07-07 .
  5. 1 2 "نهج مركب للكشف عن اللغة/الترميز" . www-archive.mozilla.org . تم الاطلاع عليه بتاريخ 12 نوفمبر 2024 .