87 votes

Comment détecter automatiquement l'encodage d'un fichier texte ?

Il existe de nombreux fichiers de texte brut qui ont été encodés dans des jeux de caractères différents.

Je veux les convertir tous en UTF-8, mais avant d'exécuter iconv, je dois connaître son encodage d'origine. La plupart des navigateurs ont un Auto Detect dans les encodages, cependant, je ne peux pas vérifier ces fichiers texte un par un car ils sont trop nombreux.

Seulement en connaissant l'encodage original, je peux alors convertir les textes en iconv -f DETECTED_CHARSET -t utf-8 .

Existe-t-il un utilitaire permettant de détecter l'encodage des fichiers de texte brut ? Il n'est pas nécessaire qu'il soit parfait à 100%, cela ne me dérange pas s'il y a 100 fichiers mal codés dans 1 000 000 de fichiers.

0voto

Mohamed23gharbi Points 101

Aussi au cas où le fichier -i vous donne des inconnus

Vous pouvez utiliser cette commande php qui peut deviner le jeu de caractères comme ci-dessous :

En php vous pouvez vérifier comme ci-dessous :

Spécification explicite de la liste de codage :

php -r "echo 'probably : ' . mb_detect_encoding(file_get_contents('myfile.txt'), 'UTF-8, ASCII, JIS, EUC-JP, SJIS, iso-8859-1') . PHP_EOL;"

Plus précis " mb_list_encodages " :

php -r "echo 'probably : ' . mb_detect_encoding(file_get_contents('myfile.txt'), mb_list_encodings()) . PHP_EOL;"

Ici, dans le premier exemple, vous pouvez voir que j'ai mis une liste d'encodages (détecter l'ordre de la liste) qui pourraient correspondre. Pour avoir un résultat plus précis, vous pouvez utiliser tous les encodages possibles via : mb_list_encodages()

Note : les fonctions mb_* nécessitent php-mbstring.

apt-get install php-mbstring 

Voir réponse : https://stackoverflow.com/a/57010566/3382822

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X