Detectarea codificării
Detectarea Codării
HTML sosește ca octeți și stratul de codare răspunde la prima întrebare a oricărui lanț de procesare: ce codare și ce text? Detectarea urmează abordarea standard — marcajele de ordine a octeților mai întâi, apoi declarațiile din conținut.
Detectarea din Octeți
detect_encoding() analizează un flux de octeți și returnează un EncodingDetectionResult care conține codarea detectată, un nivel de încredere și textul decodat. Un UTF-8 BOM este detectat cu certitudine, iar octeții BOM sunt eliminați din rezultatul decodat:
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)Setul de Instrumente pentru Detectare
sniff_bom() inspectează doar marcajele de ordine a octeților; prescan_meta_charset() aplică meta-prevederea standard pentru declarațiile de set de caractere din document; decode_bytes() efectuează decodarea odată ce o codare este aleasă. Codările neacceptate declanșează excepția tipizată UnsupportedEncodingError.
Nume Canonice
Etichetele de codare variază în sălbăticie — latin1, iso-8859-1 și us-ascii înseamnă toate windows-1252 conform standardului de codare. get_canonical_name() mapează orice etichetă înregistrată la numele său canonic.
Sfaturi și cele mai bune practici
- Aveți încredere în BOM: atunci când este prezent, este definitiv și detectorul raportează o încredere certă
- Normalizați etichetele prin
get_canonical_name()înainte de a compara codările - Utilizați
result.textdin detectare în loc să decodați din nou octeții manual
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
| BOM apare în textul decodat | Decodare manuală în loc de detect_encoding() | Detectarea elimină octeții BOM din result.text |
| Compararea etichetelor eșuează | Neconcordanță între alias și numele canonic | Normalizează cu get_canonical_name() |
A declanșat UnsupportedEncodingError | Codificarea de intrare în afara registrului | Gestionează eroarea tipizată; re-codifică în amonte |
FAQ
Ce returnează detectarea?
Un EncodingDetectionResult cu encoding, confidence și text decodificat.
Sunt gestionate etichetele vechi?
Da — tabelul de aliasuri mapează etichetele precum latin1 și us-ascii la codificările lor canonice.
Detectarea citește etichetele meta?
prescan_meta_charset() implementează standardul meta-prescan și participă la detectare.
Rezumat API Reference
| Clasă/Metodă | Descriere: |
|---|---|
detect_encoding | Detectează codarea și decodează octeții |
EncodingDetectionResult | Obiect rezultat al detectării |
sniff_bom | Inspectarea Byte-order-mark |
prescan_meta_charset | Meta-prescan al standardelor |
decode_bytes | Decodare cu o codare aleasă |
get_canonical_name | Canonizează o etichetă de codare |