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.textprovenant de la détection plutôt que de décoder à nouveau les octets vous-même.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
| 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’étiquettes | Incohérence entre l’alias et le nom canonique | Normaliser avec get_canonical_name() |
UnsupportedEncodingError levé | Encodage d’entrée hors du registre | Gé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éthode | Description |
|---|---|
detect_encoding | Détecter l’encodage et décoder les octets |
EncodingDetectionResult | Objet de résultat de détection |
sniff_bom | Inspection du marqueur d’ordre des octets |
prescan_meta_charset | Normes méta-pré-analyse |
decode_bytes | Décoder avec un encodage choisi |
get_canonical_name | Canonicaliser une étiquette d’encodage |