Page 1 sur 1

Script (bash) de conversion latin1 vers utf8

MessagePosté: Lundi 16 Août 2010, 13:08
par MB
Bonjour, voici un script bash permettant de convertir tous les fichiers tex présents dans le dossier du script ainsi que dans tous ses sous-dossiers. Il détecte tous les fichiers tex encodés en iso-8859 (latin1) et effectue leur conversion en utf-8. Le fichier iso-8859 est sauvegardé avec l'extension .latin1.

Code: Tout sélectionner
#!/usr/bin/env bash
echo "Traitement (conversion latin1 vers utf8) des fichiers suivants :"
find . -name *.tex | while read f
do
   utf=$(file --mime-encoding "$f" | grep utf)
   iso=$(file --mime-encoding "$f" | grep iso-8859)

   if test -n "$utf"
   then
      echo "$f : déjà en utf-8"
   fi

   if test -n "$iso"
   then
      echo "$f : conversion latin1 vers utf8"
      if test -f "$f.latin1"
      then
         cp "$f.latin1" "$f.latin1.bak"
      fi
      mv "$f" "$f.latin1"
      iconv -f latin1 -t utf8 "$f.latin1" > "$f"      
   fi
done
echo "Fin du traitement."
read


En espérant que ça puisse être utile à certains. :wink:

Re: Script (bash) de conversion latin1 vers utf8

MessagePosté: Lundi 16 Août 2010, 17:02
par chellier
Très intéressant ! Merci MB :D
À signaler aussi sous gnome, s'il n'y a qu'un fichier à convertir, on peut l'ouvrir avec gedit puis faire enregistrer sous et là, changer le codage de caractères.

Christophe

Re: Script (bash) de conversion latin1 vers utf8

MessagePosté: Lundi 16 Août 2010, 17:23
par biskin81
Merci beaucoup MB ! :D Très utile !
Je cherche également le même genre de script mais valable sous Windows... As-tu une idée d'où je pourrai trouver mon bonheur ? Je ne connais pas les commandes équivalentes entre Linux et Win.

Re: Script (bash) de conversion latin1 vers utf8

MessagePosté: Lundi 16 Août 2010, 17:34
par MB
biskin81 a écrit:Je cherche également le même genre de script mais valable sous Windows...


A priori, sous Windows il faudra déjà passer par cygwin pour utiliser iconv.
Sous Windows, je pense qu'il serait préférable de passer par un script Python (voir ici par exemple).

Re: Script (bash) de conversion latin1 vers utf8

MessagePosté: Jeudi 19 Août 2010, 21:29
par Achille
Très pratique ce script en effet!
Je pense qu'on pourrait l'améliorer encore en ajoutant la ligne :

Code: Tout sélectionner
sed -i -e "s:latin1:utf8:" "$f"


juste après la commande iconv...

Ça permet de remplacer au besoin dans le fichier .tex :

Code: Tout sélectionner
\usepackage[latin1]{inputenc}


par

Code: Tout sélectionner
\usepackage[utf8]{inputenc}


ce qui est bien pratique.

Re: Script (bash) de conversion latin1 vers utf8

MessagePosté: Lundi 23 Mai 2011, 16:33
par popitto
salut,
un grand merci pour votre script,
ça m'a résolu un vrai problème :)

Re: Script (bash) de conversion latin1 vers utf8

MessagePosté: Lundi 23 Mai 2011, 23:20
par gigiair
Si vous utilisez Emacs, il suffit d'écrire à la première ligne du fichier :

Code: Tout sélectionner
%%% -*- coding: utf-8 -*-


pour que le fichier soit codé en utf-8, quel que soit l'OS, ça peut évidemment s'automatiser.