Hoe tekenencoderingen te detecteren in Python
Aspose.HTML FOSS voor Python detecteert tekenencoderingen vanuit ruwe bytes op de manier zoals de standaarden voorschrijven: byte-order marks eerst, daarna declaraties in de inhoud. Deze gids snifft een byte-stroom en normaliseert encoderinglabels, met pip voor installatie.
Stap-voor-stap gids
Stap 1: Installeer het pakket
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Stap 2: Importeer vereiste functies
from aspose_html.encoding.detection import detect_encodingStap 3: Detecteer de encodering van een byte-stroom
Een UTF-8 BOM detecteert met een zekere zekerheid, en de BOM-bytes worden verwijderd uit de gedecodeerde tekst:
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)Stap 4: Normaliseer coderingslabels
Legacy-labels worden gekoppeld aan canonieke namen — latin1, iso-8859-1 en us-ascii zijn allemaal windows-1252 volgens de coderingsstandaard. Gebruik get_canonical_name() uit dezelfde modulefamilie om labels te normaliseren vóór vergelijkingen.
Veelvoorkomende problemen en oplossingen
Er verschijnt een BOM in mijn gedecodeerde tekst. Dat gebeurt bij handmatige decodering; detect_encoding() verwijdert BOM-bytes van result.text.
Coderingsovereenkomsten falen voor equivalente labels. Vergelijk canonieke namen, niet ruwe labels — normaliseer beide zijden met get_canonical_name().
Een exotische codering veroorzaakt een fout. Coderingen buiten het register veroorzaken de getypte UnsupportedEncodingError; verwerk het en codeer opnieuw upstream indien mogelijk.
Veelgestelde vragen
Wat retourneert detect_encoding?
Een EncodingDetectionResult met de gedetecteerde encoding, een confidence niveau, en de gedecodeerde text.
Kijkt detectie naar meta-tags?
Ja — de standaarden meta-prescan neemt deel via prescan_meta_charset() wanneer er geen BOM aanwezig is.
Kan ik handmatig decoderen zodra ik de encoding ken?
Ja — decode_bytes() decodeert met een gekozen encoding.