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