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.text din detectare în loc să decodați din nou octeții manual

Probleme comune

ProblemăCauzăRemediere
BOM apare în textul decodatDecodare manuală în loc de detect_encoding()Detectarea elimină octeții BOM din result.text
Compararea etichetelor eșueazăNeconcordanță între alias și numele canonicNormalizează cu get_canonical_name()
A declanșat UnsupportedEncodingErrorCodificarea de intrare în afara registruluiGestionează 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_encodingDetectează codarea și decodează octeții
EncodingDetectionResultObiect rezultat al detectării
sniff_bomInspectarea Byte-order-mark
prescan_meta_charsetMeta-prescan al standardelor
decode_bytesDecodare cu o codare aleasă
get_canonical_nameCanonizează o etichetă de codare

Vezi și:

 Română