Comment détecter les encodages de caractères dans Python

Comment détecter les encodages de caractères dans Python

Aspose.HTML FOSS for Python détecte les encodages de caractères à partir d’octets bruts conformément aux normes: les marques d’ordre d’octet d’abord, puis les déclarations dans le contenu. Ce guide analyse un flux d’octets et normalise les libellés d’encodage, en utilisant pip pour l’installation.

Guide étape par étape

Étape 1: Installer le paquet

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Étape 2: Importer les fonctions requises

from aspose_html.encoding.detection import detect_encoding

Étape 3: Détecter l’encodage d’un flux d’octets

Un UTF-8 BOM détecte avec une certaine confiance, et les octets BOM sont supprimés du texte décodé :

result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

Étape 4: Normaliser les libellés d’encodage

Les libellés hérités sont mappés aux noms canoniques — latin1, iso-8859-1 et us-ascii sont tous windows-1252 selon la norme d’encodage. Utilisez get_canonical_name() du même groupe de modules pour normaliser les libellés avant les comparaisons.

Problèmes courants et solutions

Un BOM apparaît dans mon texte décodé. Cela se produit avec le décodage manuel ; detect_encoding() supprime les octets BOM de result.text.

Les comparaisons d’encodage échouent pour des libellés équivalents. Comparez les noms canoniques, pas les libellés bruts — normalisez les deux côtés avec get_canonical_name().

Un encodage exotique déclenche une erreur. Les encodages hors du registre soulèvent le typed UnsupportedEncodingError; gérez-le et ré-encodez en amont si possible.

Foire aux questions

Que renvoie detect_encoding ?

Un EncodingDetectionResult avec le encoding détecté, un niveau confidence, et le text décodé.

La détection examine-t-elle les méta-tags ?

Oui — le meta-prescan des normes participe via prescan_meta_charset() lorsqu’aucun BOM n’est présent.

Puis-je décoder manuellement une fois que je connais l’encodage ?

Oui — decode_bytes() décode avec un encodage choisi.

Voir aussi

 Français