Script (bash) de conversion latin1 vers utf8

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Script (bash) de conversion latin1 vers utf8

Messagepar MB » Lundi 16 Août 2010, 13:08

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:
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6872
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Script (bash) de conversion latin1 vers utf8

Messagepar chellier » Lundi 16 Août 2010, 17:02

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
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: Script (bash) de conversion latin1 vers utf8

Messagepar biskin81 » Lundi 16 Août 2010, 17:23

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.
La causalité nous y sommes à jamais asservis. Notre seul espoir, notre seule paix consiste à la comprendre. Le mérovingien
biskin81
Méga-utilisateur
 
Messages: 353
Inscription: Mercredi 29 Avril 2009, 16:32
Statut actuel: Actif et salarié

Re: Script (bash) de conversion latin1 vers utf8

Messagepar MB » Lundi 16 Août 2010, 17:34

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).
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6872
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Script (bash) de conversion latin1 vers utf8

Messagepar Achille » Jeudi 19 Août 2010, 21:29

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.
Achille
Déca-utilisateur
 
Messages: 12
Inscription: Lundi 25 Juin 2007, 06:29

Re: Script (bash) de conversion latin1 vers utf8

Messagepar popitto » Lundi 23 Mai 2011, 16:33

salut,
un grand merci pour votre script,
ça m'a résolu un vrai problème :)
popitto
Utilisateur
 
Messages: 1
Inscription: Lundi 23 Mai 2011, 16:30
Statut actuel: Post-bac | Master

Re: Script (bash) de conversion latin1 vers utf8

Messagepar gigiair » Lundi 23 Mai 2011, 23:20

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.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2363
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google Adsense [Bot] et 7 invités