Détection d'encodage

Détection d’encodage

HTML arrive sous forme d’octets, et la couche d’encodage répond à la première question de toute chaîne de traitement : quel encodage, et quel texte ? La détection suit l’approche standard — les marques d’ordre des octets d’abord, puis les déclarations dans le contenu.


Détection à partir des octets

detect_encoding() analyse un flux d’octets et renvoie un EncodingDetectionResult contenant l’encodage détecté, un niveau de confiance et le texte décodé. Un UTF-8 BOM détecte avec certitude, et les octets du BOM sont supprimés de la sortie décodée :

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)

Le kit d’outils de détection

sniff_bom() inspecte uniquement les marques d’ordre des octets ; prescan_meta_charset() applique la méta-pré-analyse standard pour les déclarations de jeu de caractères dans le document ; decode_bytes() effectue le décodage une fois l’encodage choisi. Les encodages non pris en charge lèvent le UnsupportedEncodingError typé.

Noms canoniques

Les libellés d’encodage varient dans la nature — latin1, iso-8859-1 et us-ascii signifient tous windows-1252 selon la norme d’encodage. get_canonical_name() associe tout libellé enregistré à son nom canonique.


Conseils et bonnes pratiques

  • Faites confiance au BOM: lorsqu’il est présent, il est définitif et le détecteur indique une confiance certaine.
  • Normalisez les libellés via get_canonical_name() avant de comparer les encodages.
  • Utilisez result.text provenant de la détection plutôt que de décoder à nouveau les octets vous-même.

Problèmes courants

ProblèmeCauseCorrection
Le BOM apparaît dans le texte décodéDécodage manuel au lieu de detect_encoding()La détection supprime les octets BOM de result.text
Échec de la comparaison d’étiquettesIncohérence entre l’alias et le nom canoniqueNormaliser avec get_canonical_name()
UnsupportedEncodingError levéEncodage d’entrée hors du registreGérer l’erreur typée ; ré-encoder en amont

FAQ

Que renvoie la détection?

Un EncodingDetectionResult avec encoding, confidence, et text décodé.

Les étiquettes héritées sont-elles gérées?

Oui — la table d’alias associe les étiquettes comme latin1 et us-ascii à leurs encodages canoniques.

La détection lit-elle les méta-tags?

prescan_meta_charset() implémente le méta-prescan des normes et participe à la détection.


API Reference Résumé

Classe/MéthodeDescription
detect_encodingDétecter l’encodage et décoder les octets
EncodingDetectionResultObjet de résultat de détection
sniff_bomInspection du marqueur d’ordre des octets
prescan_meta_charsetNormes méta-pré-analyse
decode_bytesDécoder avec un encodage choisi
get_canonical_nameCanonicaliser une étiquette d’encodage

Voir aussi

 Français