Blog

Convertir un nom de fichier en UTF-8 sous linux

Écrit le 25 03 2013 par Kévin MET _

Un article bien court qui est plus un mémo qu'autre chose. Comment faire pour convertir un nom de fichier en UTF-8 sour linux. C'est simple, mettez vous dans le dossier ou vous avez des fichiers à convertir et lancer cette commande :


$ convmv -r --notest -f windows-1255 -t UTF-8 *
  • Le -r permet de parcourir les dossier récursivement
  • le --notest permet de reécrire les noms des fichiers
  • le -f spécifie la source d'encodage du fichier
  • le -t spécifie l'encodage final

Et si vous ne savez pas quel est l'encodage de départ il existe une fonction en python pour le deviner. J'ai bien dit deviner car ce n'est pas sur à 100% et ce petit bout de script indique en parenthèse la confiance que l'on peut apporter à cette réponse. Voici le script et une petite démo avec deux fichiers :


import chardet
import os  

for n in os.listdir('.'):
	print '%s => %s (%s)' % (n, chardet.detect(n)['encoding'], chardet.detect(n)['confidence'])

Et maintenant avec deux fichiers, l'un en utf8 et l'autre en ascii :


# ls -l

total 4
-rw-r--r-- 1 root root 150 Sep 15 19:02 test.py
-rw-r--r-- 1 root root   0 Sep 15 19:19 tête
-rw-r--r-- 1 root root   0 Sep 15 19:19 toto

# python test.py
tête => ISO-8859-2 (0.633333614815)
test.py => ascii (1.0)
toto => ascii (1.0)

Et voilà, bonne chance avec votre galère d'encodage 😉

♥ Partage sur tes réseaux sociaux ♥
Kévin MET
Kévin MET

Auteur de ce blog et gérant de la société MNT-TECH, je publie sur ce blog lorsque le temps me le permet et lorsqu'un sujet qui me parait intéressant n'a pas encore été abordé en français. Toutes les informations techniques présentes sur cette page peuvent être réutilisées moyennant le fait de citer la source.