Comment connaître l'encodage d'un fichier texte?
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.
Encodage de fichiers texte
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 :cry:. En même temps, vérifier leur présence ne coûte pas grand chose en terme de performances.
Code:
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 :
Code:
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) |
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=...".
Merci pour ces différentes pistes.