Detekce kódování
Detekce kódování
HTML přichází jako bajty a vrstva kódování odpovídá na první otázku každého potrubí: které kódování a jaký text? Detekce následuje standardní přístup — nejprve byte-order marks, pak deklarace v obsahu.
Detekce z bajtů
detect_encoding() nasává proud bajtů a vrací EncodingDetectionResult, který obsahuje detekované kódování, úroveň spolehlivosti a dekódovaný text. UTF-8 BOM detekuje jistě a BOM bajty jsou odstraněny z dekódovaného výstupu:
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)Detekční nástrojová sada
sniff_bom() kontroluje pouze byte-order marks; prescan_meta_charset() aplikuje standardní meta-předskenování pro deklarace znakové sady v dokumentu; decode_bytes() provádí dekódování, jakmile je kódování vybráno. Nepodporovaná kódování vyvolají typovaný UnsupportedEncodingError.
Kanonické názvy
Štítky kódování se v praxi liší — latin1, iso-8859-1 a us-ascii všechny znamenají windows-1252 podle standardu kódování. get_canonical_name() mapuje jakýkoli registrovaný štítek na jeho kanonické jméno.
Tipy a osvědčené postupy
- Důvěřujte BOM: pokud je přítomen, je rozhodující a detektor uvádí jistou míru důvěry.
- Normalizujte štítky pomocí
get_canonical_name()před porovnáním kódování. - Použijte
result.textz detekce místo toho, abyste sami znovu dekódovali bajty.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
| BOM se objevuje v dekódovaném textu | Manuální dekódování místo detect_encoding() | Detekce odstraňuje bajty BOM z result.text |
| Porovnání štítků selhává | Neshoda aliasu a kanonického názvu | Normalizovat pomocí get_canonical_name() |
UnsupportedEncodingError vyvoláno | Vstupní kódování mimo registr | Zpracujte typovou chybu; překódujte výše |
FAQ
Co vrací detekce?
Jedna EncodingDetectionResult s encoding, confidence a dekódovaným text.
Jsou starší štítky zpracovávány?
Ano — tabulka aliasů mapuje štítky jako latin1 a us-ascii na jejich kanonické kódování.
Čte detekce meta tagy?
prescan_meta_charset() implementuje standardy meta-prescan a podílí se na detekci.
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
detect_encoding | Detekovat kódování a dekódovat bajty |
EncodingDetectionResult | Objekt výsledku detekce |
sniff_bom | Inspekce značky pořadí bajtů |
prescan_meta_charset | Meta-předskener standardů |
decode_bytes | Dekódujte pomocí zvoleného kódování |
get_canonical_name | Kanónizujte označení kódování |