Coderingdetectie

Coderingdetectie

HTML arriveert als bytes, en de coderinglaag beantwoordt de eerste vraag van elke pijplijn: welke codering, en welke tekst? Detectie volgt de standaardaanpak — byte-order marks eerst, daarna declaraties in de inhoud.


Detectie vanuit bytes

detect_encoding() ruikt een byte-stroom en retourneert een EncodingDetectionResult die de gedetecteerde codering, een vertrouwensniveau en de gedecodeerde tekst bevat. Een UTF-8 BOM detecteert als zeker, en BOM-bytes worden verwijderd uit de gedecodeerde uitvoer:

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

De Detectietoolkit

sniff_bom() inspecteert alleen byte-order marks; prescan_meta_charset() past de standaard meta-prescan toe voor charset-declaraties in het document; decode_bytes() voert de decodering uit zodra een codering is gekozen. Niet-ondersteunde coderingen veroorzaken de getypeerde UnsupportedEncodingError.

Canonieke namen

Coderinglabels variëren in het wild — latin1, iso-8859-1 en us-ascii betekenen allemaal windows-1252 volgens de coderingstandaard. get_canonical_name() mappt elke geregistreerde label naar de canonieke naam.


Tips en best practices

  • Vertrouw op de BOM: wanneer aanwezig, is deze definitief en meldt de detector een zekere zekerheid
  • Normaliseer labels via get_canonical_name() voordat je coderingen vergelijkt
  • Gebruik result.text uit de detectie in plaats van de bytes zelf opnieuw te decoderen

Veelvoorkomende problemen

ProbleemOorzaakOplossing
BOM verschijnt in gedecodeerde tekstHandmatig decoderen in plaats van detect_encoding()Detectie verwijdert BOM-bytes van result.text
Labelvergelijking misluktAlias versus canonieke naam komt niet overeenNormaliseer met get_canonical_name()
UnsupportedEncodingError verhoogdInvoercodering buiten het registerVerwerk de typefout; herencode stroomopwaarts

FAQ

Wat geeft de detectie terug?

Een EncodingDetectionResult met encoding, confidence, en gedecodeerde text.

Worden legacy labels afgehandeld?

Ja — de alias-tabel koppelt labels zoals latin1 en us-ascii aan hun canonieke coderingen.

Leest detectie meta tags?

prescan_meta_charset() implementeert de standaard meta-prescan en neemt deel aan detectie.


API Reference Samenvatting

Klasse/MethodeBeschrijving
detect_encodingDetecteer codering en decodeer bytes
EncodingDetectionResultDetectie-uitkomstobject
sniff_bomByte-order-mark inspectie
prescan_meta_charsetStandaarden meta-voorscan
decode_bytesDecoderen met een gekozen codering
get_canonical_nameCanonicaliseer een coderinglabel

Zie ook

 Nederlands