Hur man upptäcker teckenkodningar i Python

Hur man upptäcker teckenkodningar i Python

Aspose.HTML FOSS för Python upptäcker teckenkodningar från råa byte på det sätt som standarderna föreskriver: byteordningsmärken först, sedan deklarationer i innehållet. Den här guiden sniffar en byte-ström och normaliserar kodningsetiketter, med pip för installation.

Steg-för-steg-guide

Steg 1: Installera paketet

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

Steg 2: Importera nödvändiga funktioner

from aspose_html.encoding.detection import detect_encoding

Steg 3: Detektera kodningen av en byte-ström

En UTF-8 BOM upptäcks med viss säkerhet, och BOM-byterna tas bort från den avkodade texten:

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

Steg 4: Normalisera kodningsetiketter

Äldre etiketter mappar till kanoniska namn — latin1, iso-8859-1 och us-ascii är alla windows-1252 enligt kodningsstandarden. Använd get_canonical_name() från samma modulfamilj för att normalisera etiketter innan jämförelser.

Vanliga problem och lösningar

En BOM visas i min avkodade text. Det händer vid manuell avkodning; detect_encoding() tar bort BOM-bytes från result.text.

Kodningsjämförelser misslyckas för motsvarande etiketter. Jämför kanoniska namn, inte råa etiketter — normalisera båda sidor med get_canonical_name().

En exotisk kodning ger ett fel. Kodningar utanför registret ger den typade UnsupportedEncodingError; hantera det och återkoda uppströms om möjligt.

Vanliga frågor

Vad returnerar detect_encoding?

En EncodingDetectionResult med den upptäckta encoding, en confidence nivå och den avkodade text.

Tittar detektionen på meta-taggar?

Ja — standardens meta-prescan deltar via prescan_meta_charset() när ingen BOM finns.

Kan jag avkoda manuellt när jag vet kodningen?

Ja — decode_bytes() avkodar med en vald kodning.

Se även

 Svenska