Bonjour,
J'aurais voulu savoir s'il était possible de connaître l'encodage d'un fichier texte?
je bute sur cette question depuis un petit moment...
Merci d'avance.
Bonjour,
J'aurais voulu savoir s'il était possible de connaître l'encodage d'un fichier texte?
je bute sur cette question depuis un petit moment...
Merci d'avance.
Il n'y a pas de méthode tout faite pour cela.
Tu peux cependant tenter ta chance avec le module mimietypes par ici : http://docs.python.org/lib/module-mimetypes.html
Bonjour,
Regarde aussi du côté du "BOM" (http://fr.wikipedia.org/wiki/Byte_Order_Mark).
Par exemple, certains éditeurs de texte (y compris notepad sous Windows) ajoutent au début du texte à enregistrer en utf-8 (par exemple) les 3 octets: "EF BB BF", ce qui leur permet de repérer leur encodage la fois suivante.
Pour y comprendre quelque chose, je te conseille d'utiliser un éditeur hexa et de faire quelques essais.
Tyrtamos
Bonjour,
Je viens de regarder du côté des signatures présentes au début des fichiers. Un seul problème : ces séquences ne sont que très rarement présentes au début des fichiers. En même temps, vérifier leur présence ne coûte pas grand chose en terme de performances.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 import codecs file = open(filename, 'r') file.next().startswith(codecs.BOM_UTF8)
La première piste était de regarder dans l'en-tête des fichiers la présence d'un motif du type coding = qqchose. Un petit coup d'expressions régulières donc :
En résumé donc, si le fichier comporte une marque d'encodage, il suffit de lire les 2 premières lignes puis de 1) vérifier que les lignes commencent par une marque d'ordre d'octets, et 2) vérifier la présence d'un motif "coding=...".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def coding(str): coding_re = re.compile("coding[:=]\s*([-\w_.]+)") match = coding_re.search(str) if not match: return None return match.group(1)
Merci pour ces différentes pistes.
Partager