Jak wykrywać kodowania znaków w Python

Jak wykrywać kodowania znaków w Python

Aspose.HTML FOSS dla Python wykrywa kodowania znaków z surowych bajtów zgodnie ze standardami: najpierw znaczniki kolejności bajtów, potem deklaracje w treści. Ten przewodnik analizuje strumień bajtów i normalizuje etykiety kodowań, używając pip do instalacji.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

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: Zaimportuj wymagane funkcje

from aspose_html.encoding.detection import detect_encoding

Krok 3: Wykryj kodowanie strumienia bajtów

Wykryto UTF-8 BOM z pewnym poziomem pewności, a bajty BOM są usuwane z zdekodowanego tekstu:

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

Krok 4: Normalizacja etykiet kodowania

Etykiety starszych wersji mapują się na nazwy kanoniczne — latin1, iso-8859-1 i us-ascii są wszystkie windows-1252 zgodnie ze standardem kodowania. Użyj get_canonical_name() z tej samej rodziny modułów, aby znormalizować etykiety przed porównaniami.

Typowe problemy i rozwiązania

W moim zdekodowanym tekście pojawia się BOM. To zdarza się przy ręcznym dekodowaniu; detect_encoding() usuwa bajty BOM z result.text.

Porównania kodowań nie powiodą się dla równoważnych etykiet. Porównuj nazwy kanoniczne, a nie surowe etykiety — normalizuj obie strony przy użyciu get_canonical_name().

Egzotyczne kodowanie generuje błąd. Kodowania spoza rejestru podnoszą określony typ UnsupportedEncodingError; obsłuż to i ponownie zakoduj w górnym przepływie, jeśli to możliwe.

Najczęściej zadawane pytania

Co zwraca detect_encoding?

Obiekt EncodingDetectionResult z wykrytym encoding, poziomem confidence i zdekodowanym text.

Czy wykrywanie sprawdza meta tagi?

Tak — standardowe meta-przeskanowanie uczestniczy poprzez prescan_meta_charset(), gdy nie ma BOM.

Czy mogę ręcznie dekodować, gdy znam kodowanie?

Tak — decode_bytes() dekoduje przy wybranym kodowaniu.

Zobacz także

 Polski