Jak detekovat znakové kódování v Python

Jak detekovat znakové kódování v Python

Aspose.HTML FOSS pro Python detekuje znaková kódování z raw bajtů tak, jak to předepisují standardy: nejprve byte-order marky, pak deklarace v obsahu. Tento průvodce prohledává proud bajtů a normalizuje štítky kódování, přičemž používá pip pro instalaci.

Krok za krokem

Krok 1: Nainstalujte balíček

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Krok 2: Importujte požadované funkce

from aspose_html.encoding.detection import detect_encoding

Krok 3: Detekujte kódování proudu bajtů

Detekce UTF-8 BOM s určitou jistotou a bajty BOM jsou odebrány z dekódovaného textu:

result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

Krok 4: Normalizovat štítky kódování

Staré štítky jsou mapovány na kanonické názvy — latin1, iso-8859-1 a us-ascii jsou podle standardu kódování všechny windows-1252. Použijte get_canonical_name() ze stejné rodiny modulů k normalizaci štítků před porovnáním.

Běžné problémy a opravy

V mém dekódovaném textu se objevuje BOM. To se stane při ručním dekódování; detect_encoding() odstraňuje bajty BOM z result.text.

Porovnání kódování selhává pro ekvivalentní štítky. Porovnávejte kanonické názvy, ne surové štítky — normalizujte obě strany pomocí get_canonical_name().

Exotické kódování vyvolá chybu. Kódování mimo registr vyvolají typovaný UnsupportedEncodingError; ošetřete to a pokud možno znovu zakódujte výše.

Často kladené otázky

Co vrací detect_encoding?

Jedno EncodingDetectionResult s detekovaným encoding, úrovní confidence a dekódovaným text.

Zkoumá detekce meta tagy?

Ano — standardní meta-prescan se podílí přes prescan_meta_charset(), když není přítomen BOM.

Mohu dekódovat ručně, jakmile znám kódování?

Ano — decode_bytes() dekóduje s vybraným kódováním.

Viz také:

 Čeština