Attention : Ne surtout pas effectuer cette manipulation sur des fichiers binaires, vous risqueriez de les corrompres (les rendre illisibles). Si vous l'avez fait, refaites la conversion mais dans le sens contraire (encodage de départ ⇔ encodage d'arrivée).
L'utilitaire iconv permet de convertir un flux de caractères d'un encodage vers un autre. Il peut travailler sur des fichiers où directement sur les flux d'entrée et de sortie standards.
# Avec les arguments longs. iconv --from-code ENCODAGE_DE_DÉPART --to-code ENCODAGE_DARRIVÉE FICHIER_SOURCE --output FICHIER_DESTINATION # Avec les arguments courts. iconv -f ENCODAGE_DE_DÉPART -t ENCODAGE_DARRIVÉE FICHIER_SOURCE -o FICHIER_DESTINATION
Attention : Le fichier d'entrée et celui de sortie doivent être différents car iconv lit le fichier en même temps qu'il écrit. Il faut donc passer par un fichier intermédiaire et faire un mv.
Conversion d'un fichier (exemple.txt) de latin 1 (ou ISO-8859-1) vers UTF-8 :
iconv -f latin1 -t utf-8 exemple.txt -o exemple.txt.conv && mv -f exemple.txt.conv exemple.txt
Conversion du même fichier mais en utilisant l'entrée et la sortie standard :
iconv -f latin1 -t utf-8 < exemple.txt > exemple.txt.conv && mv -f exemple.txt.conv exemple.txt
convmv est un super petit script très simple d'utilisation en Perl qui permet de changer l'encodage des noms de fichiers.
Utilisation :
# Simulation. convmv -f ENCODAGE_DE_DÉPART -t ENCODAGE_DARRIVÉE FICHIER … # Renommage effectif. convmv --notest -f ENCODAGE_DE_DÉPART -t ENCODAGE_DARRIVÉE FICHIER …
Il est possible d'effectuer un renommage récursif avec l'option -r.
À noter : La commande convmv –list vous permet de visualiser les encodages disponibles.
iconv (man iconv).convmv (man convmv).