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émaOkJavítás
A BOM megjelenik a dekódolt szövegbenKézi dekódolás a detect_encoding() helyettAz észlelés eltávolítja a BOM bájtokat a result.text-ból
A címke-összehasonlítás sikertelenAz álnév és a kanonikus név nem egyezikNormalizálás a get_canonical_name() segítségével
UnsupportedEncodingError kiváltvaBemeneti kódolás a nyilvántartáson kívülKezeld 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ódszerLeírás
detect_encodingÉszleld a kódolást és dekódold a bájtokat
EncodingDetectionResultDetektálás eredmény objektum
sniff_bomByte-order-mark ellenőrzés
prescan_meta_charsetSzabványok meta-előellenőrzése
decode_bytesDekódolás a választott kódolással
get_canonical_nameKódolási címke kanonikalizálása

Lásd még:

 Magyar