Kodningsdetektering
Kodningsdetektering
HTML kommer som bytes, och kodningslagret svarar på den första frågan i alla pipelines: vilken kodning, och vilken text? Detektering följer standardmetoden — byte-order-markeringar först, sedan deklarationer i innehållet.
Detektera från bytes
detect_encoding() sniffar en byte-ström och returnerar en EncodingDetectionResult som bär den upptäckta kodningen, en förtroendenivå och den avkodade texten. En UTF-8 BOM detekteras som säker, och BOM-bytar tas bort från den avkodade utdata:
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)Detekteringsverktygssatsen
sniff_bom() inspekterar byte-order-markeringar ensam; prescan_meta_charset() tillämpar standards meta-förskanning för teckenuppsättningsdeklarationer i dokumentet; decode_bytes() utför avkodningen när en kodning har valts. Ej stödda kodningar kastar det typade UnsupportedEncodingError.
Kanoniska namn
Kodningsetiketter varierar i det fria — latin1, iso-8859-1 och us-ascii betyder alla windows-1252 enligt kodningsstandarden. get_canonical_name() mappar varje registrerad etikett till dess kanoniska namn.
Tips och bästa praxis
- Lita på BOM: när den finns är den definitiv och detektorn rapporterar viss säkerhet
- Normalisera etiketter via
get_canonical_name()innan du jämför kodningar - Använd
result.textfrån detektering istället för att själv avkoda bytarna
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
| BOM visas i avkodad text | Manuell avkodning i stället för detect_encoding() | Detektering tar bort BOM-bytes från result.text |
| Etikettjämförelse misslyckas | Alias vs kanoniskt namn matchar inte | Normalisera med get_canonical_name() |
UnsupportedEncodingError kastades | Inmatningskodning utanför registret | Hantera det typade felet; koda om uppströms |
FAQ
Vad returnerar detektionen?
En EncodingDetectionResult med encoding, confidence och avkodad text.
Hanteras äldre etiketter?
Ja — alias-tabellen mappar etiketter som latin1 och us-ascii till deras kanoniska kodningar.
Läser detektering meta-taggar?
prescan_meta_charset() implementerar standarden meta-prescan och deltar i detektering.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
detect_encoding | Detektera kodning och avkoda byte |
EncodingDetectionResult | Detekteringsresultatobjekt |
sniff_bom | Byteordningsmarkörinspektion |
prescan_meta_charset | Standarders metaförskanning |
decode_bytes | Dekoda med en vald kodning |
get_canonical_name | Kanonisera en kodningsetikett |