זיהוי קידוד
זיהוי קידוד
HTML מגיע כבתים, ושכבת הקידוד משיבה על השאלה הראשונה של כל צינור עבודה: איזה קידוד, ואיזה טקסט? הזיהוי פועל לפי גישת הסטנדרטים — תחילה סימני סדר בתים (BOM), ולאחר מכן הצהרות בתוך התוכן.
זיהוי מתוך בתים
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 לקידודים הקנוניים שלהן.
האם הזיהוי קורא תגי meta?
prescan_meta_charset() מיישם את תקני meta-prescan ומשתתף בזיהוי.
API Reference סיכום
| מחלקה/מתודה | תיאור |
|---|---|
detect_encoding | זהה קידוד ופענח בתים |
EncodingDetectionResult | אובייקט תוצאת זיהוי |
sniff_bom | בדיקת סימן סדר בתים |
prescan_meta_charset | מטה-סריקה מקדימה של תקנים |
decode_bytes | פענח עם קידוד נבחר |
get_canonical_name | הפוך תווית קידוד לקנונית |