Kódolásfelismerés
Kódolásészlelés
HTML bájtokként érkezik, és a kódolási réteg megválaszolja bármely csővezeték első kérdését: melyik kódolás, és mi a szöveg? A detektálás a szabványos megközelítést követi — először a byte-order mark-ok, majd a tartalomban lévő deklarációk.
Detektálás bájtokból
detect_encoding() átvizsgál egy bájtfolyamot, és visszaad egy EncodingDetectionResult objektumot, amely tartalmazza a detektált kódolást, egy megbízhatósági szintet és a dekódolt szöveget. Egy UTF-8 BOM biztosan felismeri, és a BOM bájtok eltávolításra kerülnek a dekódolt kimenetből:
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)A detektálási eszköztár
sniff_bom() csak a byte-order mark-okat vizsgálja; prescan_meta_charset() alkalmazza a szabványos meta-elővizsgálatot a dokumentumban lévő karakterkészlet-deklarációkhoz; decode_bytes() végrehajtja a dekódolást, miután a kódolás ki lett választva. A nem támogatott kódolások a típusspecifikus UnsupportedEncodingError hibát dobják.
Kanonikus nevek
A kódolási címkék a természetben változóak — latin1, iso-8859-1 és us-ascii mind windows-1252-t jelentenek a kódolási szabvány szerint. get_canonical_name() bármely regisztrált címkét a kanonikus nevére képezi le.
Tippek és legjobb gyakorlatok
- Bízz a BOM-ban: ha jelen van, végleges, és a detektor egy bizonyos fokú bizalmat jelent.
- Normalizáld a címkéket a
get_canonical_name()segítségével, mielőtt összehasonlítanád a kódolásokat. - Használd a
result.text-t a detektálásból, ahelyett, hogy magad dekódolnád újra a bájtokat.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
| A BOM megjelenik a dekódolt szövegben | Kézi dekódolás a detect_encoding() helyett | Az észlelés eltávolítja a BOM bájtokat a result.text-ból |
| A címke-összehasonlítás sikertelen | Az álnév és a kanonikus név nem egyezik | Normalizálás a get_canonical_name() segítségével |
UnsupportedEncodingError kiváltva | Bemeneti kódolás a nyilvántartáson kívül | Kezeld a beírt hibát; kódold újra feljebb |
FAQ
Mit ad vissza a detektálás?
Egy EncodingDetectionResult encoding, confidence és dekódolt text.
A régi címkéket kezelik?
Igen — az alias tábla a latin1 és a us-ascii címkéket a kanonikus kódolásaikhoz rendeli.
A detektálás olvassa a meta címkéket?
prescan_meta_charset() megvalósítja a szabványos meta-prescan-t és részt vesz a detektálásban.
API Reference összefoglaló
| Osztály/Módszer | Leírás |
|---|---|
detect_encoding | Észleld a kódolást és dekódold a bájtokat |
EncodingDetectionResult | Detektálás eredmény objektum |
sniff_bom | Byte-order-mark ellenőrzés |
prescan_meta_charset | Szabványok meta-előellenőrzése |
decode_bytes | Dekódolás a választott kódolással |
get_canonical_name | Kódolási címke kanonikalizálása |