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.text z detekce místo toho, abyste sami znovu dekódovali bajty.

Časté problémy

ProblémPříčinaOprava
BOM se objevuje v dekódovaném textuManuá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ázvuNormalizovat pomocí get_canonical_name()
UnsupportedEncodingError vyvolánoVstupní kódování mimo registrZpracujte 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/MetodaPopis:
detect_encodingDetekovat kódování a dekódovat bajty
EncodingDetectionResultObjekt výsledku detekce
sniff_bomInspekce značky pořadí bajtů
prescan_meta_charsetMeta-předskener standardů
decode_bytesDekódujte pomocí zvoleného kódování
get_canonical_nameKanónizujte označení kódování

Viz také:

 Čeština