Comment déterminer la table d’encodage d’un fichier texte

J’ai des .txt et .java et je ne sais pas comment déterminer le tableau d’encodage des fichiers (Unicode, UTF-8, ISO-8525,…). Existe-t-il un programme pour déterminer le codage du fichier ou pour voir l’encodage?

Si vous êtes sous Linux, essayez le file -i filename.txt .

 $ file -i vol34.tex vol34.tex: text/x-tex; charset=us-ascii 

Pour référence, voici mon environnement:

 $ which file /usr/bin/file $ file --version file-5.09 magic file from /etc/magic:/usr/share/misc/magic 

Certaines versions de file (par exemple, le fichier 5.04 sur OS X / macOS) ont des commutateurs de ligne de commande légèrement différents:

 $ file -I vol34.tex vol34.tex: text/x-tex; charset=us-ascii $ file --mime vol34.tex vol34.tex: text/x-tex; charset=us-ascii 

Aussi, regardez ici .

Ouvrez le fichier avec Notepad ++ et verrez à droite le nom de la table de codage. Et dans l’encodage du menu, vous pouvez modifier le tableau d’encodage et enregistrer le fichier.

Vous ne pouvez pas détecter de manière fiable le codage à partir d’un fichier texte – vous pouvez faire une estimation éclairée en recherchant un caractère non-ascii et en essayant de déterminer s’il s’agit d’une combinaison unicode dans les langues que vous parsingz.

Voir cette question et la réponse sélectionnée . Il n’y a pas de moyen sûr de le faire. Au plus, vous pouvez exclure des choses. Il est peu probable que les encodages UTF contiennent des faux positifs, mais les encodages 8 bits sont difficiles, surtout si vous ne connaissez pas la langue de départ. Aucun outil ne gère actuellement tous les encodages 8 bits courants des Mac, Windows, Unix, mais la réponse sélectionnée fournit une approche algorithmique qui devrait fonctionner correctement pour un certain sous-ensemble d’encodages.

Dans un fichier texte , aucun en-tête ne sauvegarde le codage . Vous pouvez essayer la commande linux / unix find qui essaie de deviner l’encodage:

 file -i unreadablefile.txt 

ou sur certains systèmes

 file -I unreadablefile.txt 

Mais cela vous donne souvent du text/plain; charset=iso-8859-1 text/plain; charset=iso-8859-1 bien que le fichier soit illisible (glyphes cryptiques).

C’est ce que j’ai fait pour trouver le bon encodage de fichier pour un fichier illisible, puis le traduire en utf8 après avoir installé iconv . J’ai d’abord essayé tous les encodages, affichant ( grep ) une ligne contenant le mot www. (une adresse de site Web):

 for ENCODING in $(iconv -l); do echo -n "$ENCODING "; iconv -f $ENCODING -t utf-8 unreadablefile.txt 2>/dev/null| grep 'www'; done | less 

Cette dernière ligne de commande affiche l’encodage du fichier testé, puis la ligne traduite / transcodée.

Certaines lignes présentaient des résultats lisibles et cohérents (une langue à la fois). J’ai essayé manuellement certains d’entre eux, par exemple:

 ENCODING=WINDOWS-936; iconv -f $ENCODING -t utf-8 unreadablefile.txt -o test_with_${ENCODING}.txt 

Dans mon cas, c’était un encodage Windows chinois, qui est maintenant lisible (si vous connaissez le chinois).