Un point sur l'encodage des caractères

Aaaaaahhh l’encodage des caractères ! C’est la tour de Babel de l’informatique. Je vais essayer de vous donner quelques bases pour vous en sortir.

Il y a trois utilitaires à connaitre quand on a des problèmes d’encodage des caractères : iconv (l’indispensable), uchardet (le méconnu mais très utile), recode (parfois utile).

iconv permet de convertir un fichier d’un encodage vers un autre. Le problème c’est qu’il n’est pas intelligent, il faut lui spécifier l’encodage des caractères du fichier en entrée… mais encore faut-il connaitre cet encodage. uchardet permet justement de détecter l’encodage d’un fichier. recode fait grosso-modo le même travail que iconv mais écrase le fichier d’entrée, il faut donc faire très attention. Il peut être utile dans le cas où vous avez de nombreux fichiers à convertir par exemple.

apt-get install libtext-iconv-perl # Installation de iconv
apt-get install uchardet # Installation de uchardet
apt-get install recode # Installation de recode

Quelques exemples avec iconv.

iconv --from-code windows-1252 --to-code UTF-8 encodagequejaimepas.txt --output encodagequejaime.txt # Version longue
iconv -f ISO-8859-1 -t UTF-8 /var/www/encodagequejaimepas.html -o /var/www/encodagequejaime.html # Version courte, -f est équivalent à --from-code, -t est équivalent à --to-code, --output est équivalent à -o
iconv --list ou iconv -l # Afficher la liste des jeux de caractères reconnus par iconv

Quelques remarques : 1/ Si -t n’est pas spécifié, l’encodage (en sortie) choisi est celui de la locale du système 2/ Pour connaitre la locale du système : locale 3/ L’encodage Windows-1252 ou CP1252 c’est la même chose (voir ici pour l’explication).

uchardet s’utilise ainsi uchardet encodagequejaimepas.txt et indique l’encodage du fichier (par exemple Windows-1252). A noter que le mainteneur est Jehan développeur sur ZeMarmot, qu’on peut récupérer une version plus récente de ucharted sur le repository GitHub et qu’il y a une page Bountysource (Cet intermède publicitaire vous est offert par Cascador).

Dans le prochain article on ira plus loin en rentrant dans un problème concret.

A lire (notamment les commentaires) : linuxfr.org

Déjà 2 avis pertinents dans Un point sur l'encodage des caractères

  • sytoka
    Il y a aussi l’indispensable convmv pour les serveurs NAS lors de grosse migration de données afin de changer l’encodage des noms des fichiers !

     »
    convmv can convert a single filename, a directory tree or all files
    on a filesystem to a different encoding. It only converts the
    encoding of filenames, not files contents. A special feature of
    convmv is that it also takes care of symlinks: the encoding of the
    symlink’s target will be converted if the symlink itself is being
    converted.
    .
    It is also possible to convert directories to UTF-8 which are already
    partially UTF-8 encoded.
    « 

Les commentaires sont fermés.