24 févr. 2016

[UNIX/LINUX] Encoder un fichier en UTF-8

J'ai eu récemment le cas d'un document récupéré sur une machine windows dont certains caractères n'étaient pas visibles: notamment les s'affichaient <80> dans vim.

Déjà, pour connaitre l'encodage d'un fichier:
Sous Ubuntu
$ uchardet fichier.txt
windows-1252
Sous CentOS (et aussi Ubuntu)
$ file -i fichier.txt
fichier.txt: text/html; charset=unknown-8bit
Je n'ai pas trouvé d'équivalence de uchardet dans CentOS...

Maintenant, comment encoder le fameux fichier windows-1252 en UTF-8 (avec iconv disponible sur CentOS et Ubuntu):
$ iconv -f windows-1252 -t UTF-8 fichier.txt -o fichier-utf8.txt
et voilà :
$ file -i fichier-utf8.txt
fichier-utf8.txt: application/xml; charset=utf-8
Il va de soi que l'on peut utiliser iconv pour convertir dans les deux sens, ou depuis un autre format
exemple:
$ iconv -f UTF-8 -t ISO-8859-1 fichier.txt -o fichier-utf8.txt

Aucun commentaire:

Enregistrer un commentaire