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.textuit de detectie in plaats van de bytes zelf opnieuw te decoderen
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| BOM verschijnt in gedecodeerde tekst | Handmatig decoderen in plaats van detect_encoding() | Detectie verwijdert BOM-bytes van result.text |
| Labelvergelijking mislukt | Alias versus canonieke naam komt niet overeen | Normaliseer met get_canonical_name() |
UnsupportedEncodingError verhoogd | Invoercodering buiten het register | Verwerk 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/Methode | Beschrijving |
|---|---|
detect_encoding | Detecteer codering en decodeer bytes |
EncodingDetectionResult | Detectie-uitkomstobject |
sniff_bom | Byte-order-mark inspectie |
prescan_meta_charset | Standaarden meta-voorscan |
decode_bytes | Decoderen met een gekozen codering |
get_canonical_name | Canonicaliseer een coderinglabel |