Blog de benji1000

Changer l'encodage des caractères d'un fichier (automatiquement)

Le 27 février 2012 dans Informatique

Cette semaine, j'ai dû faire des scripts pour récupérer le résultat de requêtes SQL provenant d'un vieux tromblon, un Windows NT avec une base SQL Server 2000. Ce con m'enregistrait les fichiers avec un encodage UTF-16LE. J'ai dû passer par l'astuce suivante afin de le ré-encoder en ANSI (iso-8859-1) pour qu'il puisse être traité par mon script Perl.

Tout d'abord, commencez par télécharger LibIconv pour Windows. Ce petit utilitaire est en fait le portage sur Windows d'un utilitaire présent de base dans Linux, iconv. Il fait partie d'un plus gros package qui s'appelle GnuWin. Téléchargez-le et installez-le donc.

Une fois l'installation terminée, allez dans C:\Program Files\GnuWin\bin, et sélectionnez les 4 fichiers qui se trouvent dans le dossier. Vous les copierez dans le dossier où se passera la conversion.

Dès lors, si vous souhaitez par exemple convertir un fichier UTF-16 en ANSI , ouvrez une invite de commande Windows, faites un petit cd pour vous placer dans le répertoire où vous souhaitez faire la conversion (avec les 4 fichiers copiés précédemment), et faites :

iconv -f encodage_base -t nouvel_encodage fichier_base.txt nouveau_fichier.txt

Notez qu'il faut que vous indiquiez le nom de l'encodage tel que iconv le comprendra. Dans mon cas, iconv ne comprenait pas UTF-16LE ; j'ai dû lui indiquer simplement UTF-16 pour qu'il comprenne.

Remarque : si vous souhaitez réaliser des conversions ponctuelles à la mano , le logiciel Notepad++ le fait très bien ( Encodage => Convertir en... ).