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_encodingKrok 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.