كشف الترميز

الكشف عن الترميز

HTML يصل على شكل بايتات، وتجيب طبقة الترميز على السؤال الأول في أي خط أنابيب: ما هو الترميز، وما هو النص؟ يتبع الكشف النهج القياسي — علامات ترتيب البايت أولاً، ثم إعلانات داخل المحتوى.


الكشف من البايتات

detect_encoding() يلتقط تدفق البايتات ويعيد EncodingDetectionResult يحمل الترميز المكتشف، ومستوى الثقة، والنص المفكوك. UTF-8 BOM يكتشف بثقة، وتُزال بايتات BOM من النص المفكوك:

from aspose_html.encoding.detection import detect_encoding
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

مجموعة أدوات الكشف

sniff_bom() يفحص علامات ترتيب البايت بمفردها؛ prescan_meta_charset() يطبق الفحص المسبق الفوقي وفق المعايير لإعلانات مجموعة الأحرف داخل المستند؛ decode_bytes() ينفّذ عملية فك الترميز بمجرد اختيار الترميز. الترميزات غير المدعومة ترفع الاستثناء المكتوب UnsupportedEncodingError.

الأسماء القياسية

تختلف تسميات الترميز في الواقع — latin1، iso-8859-1، وus-ascii جميعها تعني windows-1252 وفقًا لمعيار الترميز. get_canonical_name() يطابق أي تسمية مسجلة إلى اسمها الرسمي.


نصائح وأفضل الممارسات

  • ثق بـ BOM: عندما يكون موجودًا، فهو حاسم ويُظهر الكاشف ثقة معينة
  • قم بتطبيع التسميات عبر get_canonical_name() قبل مقارنة الترميزات
  • استخدم result.text من الكشف بدلاً من إعادة فك تشفير البايتات بنفسك

المشكلات الشائعة

المشكلةالسببالإصلاح
يظهر BOM في النص المفككفك تشفير يدوي بدلاً من detect_encoding()الاكتشاف يزيل بايتات BOM من result.text
فشل مقارنة التسميةعدم تطابق بين الاسم المستعار والاسم الرسميتطبيع باستخدام get_canonical_name()
UnsupportedEncodingError تم رفعهترميز الإدخال خارج السجلمعالجة الخطأ المكتوب؛ إعادة الترميز في المصدر

FAQ

ماذا تُعيد عملية الكشف؟

EncodingDetectionResult مع encoding، confidence، وtext المفكك.

هل يتم التعامل مع الملصقات القديمة؟

نعم — تقوم جدول الأسماء المستعارة بربط الملصقات مثل latin1 وus-ascii بترميزاتهم القياسية.

هل يقرأ الاكتشاف وسوم الميتا؟

prescan_meta_charset() يطبق معيار meta-prescan ويشارك في الاكتشاف.


ملخص API Reference

فئة/طريقةوصف
detect_encodingاكتشاف الترميز وفك تشفير البايتات
EncodingDetectionResultكائن نتيجة الكشف
sniff_bomفحص علامة ترتيب البايت
prescan_meta_charsetالمسح المسبق الوصفي للمعايير
decode_bytesفك الترميز باستخدام الترميز المختار
get_canonical_nameتحويل تسمية الترميز إلى الشكل القياسي

انظر أيضاً

 العربية