كشف الترميز
الكشف عن الترميز
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 | تحويل تسمية الترميز إلى الشكل القياسي |