IMB > cellule > Environnement informatique > FAQ > Astuces

Passage de ISO-8859-1 à UTF-8

[sommaire]

Préambule

La représentation informatique des caractères (lettres, chiffres, symboles)
se standardise avec l’apparition du code ASCII vers 1960. Malheureusement, ce
standard ne concerne qu’un petit nombres de caractères, suffisant pour
l’écriture de textes en anglais ou de programmes. Plusieurs extensions (ISO
646, CP437, ...) sont développées, par exemple pour représenter des
caractères accentués. Elles sont hélas incompatibles et rendent
problématiques l’échange de textes d’un système à l’autre. Des logiciels
comme TeX réglent ce problème en se limitant au standard ASCII et en imposant
des constructions génériques mais lourdes (comme \'{e} pour
é).

Vers 1992, une nouvelle norme d’encodage, ISO-8859-1 ou ISO Latin1, se
généralise pour introduire les caractères accentués utilisés en Europe de
l’Ouest (pour ce qui nous concerne), norme qui évolue ensuite vers
ISO-8859-15 avec l’apparition du caractère € (Euro). Hélas,
des extensions propriétaires du standard apparaissent de nouveau,
créant de nouvelles variantes incompatibles CP1552 (Windows) et Mac OS Roman
(Mac OS). Indépendamment de ces problèmes récurrents de compatibilité, la
limite de ces normes est un encodage régional, différent pour l’Europe de
l’Ouest, l’Europe de l’Est, l’Asie, les langues arabes, etc. : il n’est pas
possible d’écrire en des langues de région différentes dans un même document.

En 1991, un ensemble universel de caractères est défini : Unicode, regroupant
les caractères de toutes les langues officielles de l’ensemble des pays dans
le monde ; ainsi que des alphabets disparus comme le cunéiforme ou les
hiéroglyphes, voire des alphabets imaginaires comme le Tengwar inventé par
Tolkien. Plusieurs encodages pour les caractères d’Unicode sont proposés,
parmi lesquels émerge la norme UTF-8. Le choix d’Unicode et d’UTF-8 permet en
particulier de mélanger plusieurs langues dans un même document et de régler
tous les problèmes de compatibilité entre systèmes ayant fait ce choix
d’encodage.

Les systèmes Unix, Windows et Apple utilisent UTF-8 en interne. Vu de
l’utilisateur, l’encodage par défaut reste souvent ISO-8859-1 ou une de ses
extensions propriétaires, pour des raisons de compatibilité.
UTF-8 est en effet compatible avec ASCII, mais pas avec ISO-8859-1 : un texte
français encodé en ISO-8859-1 n’est pas de l’UTF-8 valide s’il contient des
caractères accentués. S’il est édité par un logiciel qui attend de l’UTF-8,
tous les caractères « invalides » (tous les caractères accentués) disparaîtront.

Les systèmes d’exploitation sur le réseau de l’IMB utilisent l’encodage
UTF-8. Si vous échangez des documents utilisant d’autre encodage comme
ISO-8859-1 vous devez prendre des précautions afin que les fichiers textes
contenant des caractères accentués ISO-8859-1 ou UTF-8 soient bien acceptés
par vos collègues et pas massacrés lors d’une édition. Les fichiers concernés
sont essentiellement les fichiers LaTeX, vos pages HTML, éventuellement
quelques fichiers textes bruts (.txt)... s’ils contiennent des lettres
accentuées.

Il n’est pas obligatoire de modifier l’encodage de vos fichiers existants :
une instruction LaTeX \usepackage[latin1]{inputenc}, ou un tag
HTML

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

assurent que ces fichiers continuent d’être correctement traités par les
programmes qui doivent les interpréter, respectivement latex et un
navigateur Web. Mais il est important d’être conscient de l’encodage utilisé
pour vos fichiers et de bien comprendre qu’un problème peut se poser lors de
l’édition d’un fichier contenant des caractères accentués, en particulier
lors d’échanges avec des collègues. Heureusement, il est facile de changer
l’encodage d’un fichier.

Précautions à prendre avec les fichiers TeX et LaTeX

 Les fichiers LaTeX doivent contenir au moins deux packages pour le traitement des caractères accentués :

Vous devez positionner le package inputenc selon que votre éditeur de texte
et votre fichier est dans un encodage latin1 (ISO-8859-1) ou UTF-8. En effet,
le problème réside dans le fait que les fichiers édités changent
d’ordinateurs ou de personnes. Dans ce cas, ils peuvent passer par des
encodages différents. Si un fichier encodé en UTF-8 est enregistré au format
ISO (et vice-versa), tous les accents deviennent des caractères illisibles,
et la marche arrière est impossible.

 Le plus important est que votre éditeur de texte enregistre le fichier
dans le système d’encodage d’origine de votre fichier avant édition

Emacs, Xemacs et Vi (vim)

Emacs/Xemacs et Vim détectent l’encodage du fichier lors de
sa lecture. L’éditeur se met en accord avec l’encodage, afin que, lorsque
vous tapez des accents ou lorsque vous enregistrez, l’encodage reste
cohérent. Il ne vous reste alors qu’à positionner correctement le package
inputenc pour que les accents s’affichent.

Remarque : Emacs affiche dans la barre inférieure le type d’encodage
utilisé : si la barre commence avec les caractères -1:
le fichier est en ISO-8859-1, si la barre commence avec les caractères
-u: le fichier est encodé en UTF-8. Dans Vim, la command
:set fileencoding indique l’encodage du fichier.

Les autres éditeurs de texte

D’autres éditeurs de textes ne détectent pas l’encodage, mais le positionnent
dans leurs préférences. Vous devez donc garder à l’esprit de positionner soit
ISO-8859-1 soit UTF-8 dans votre logiciel en accord avec la façon dont le
fichier est encodé.

Comment savoir ? ...

... si mon éditeur de texte est en accord avec l’encodage du fichier en
cours d’édition ?
Tapez quelques caractères accentués (éàçè, etc.) : si ces
caractères s’affichent correctement et si les caractères déjà écrits (avant
modification) sont aussi bien affichés, c’est bon. Sinon, il y a une
inversion entre les préférences de votre éditeur et l’encodage du fichier :
n’enregistrez surtout pas votre fichier ! Lisez plutôt les deux
points suivants :

Comment changer la préférence d’encodage...

... de mon éditeur de texte ? Si vous ne trouvez pas cette information dans
les préférences du logiciel ni après une rapide recherche internet, écrivez à
la cellule informatique

Comment changer l’encodage de mon fichier ?

Sous Unix/Linux, ainsi que MacOSX, la commande iconv gère cette
conversion.

De cette façon vous obtenez un nouveau fichier dans l’encodage de votre choix

Il existe sous Linux une commande permettant de modifier l’encodage du
fichier sans le renommer (cette comande s’installe aussi sous MacOSX grâce à
fink) :

Attention recode modifie votre original. Vérifiez toujours que le
résultat est conforme à vos attentes. Sinon, effectuez la transformation
inverse (par exemple latin1..utf8 après utf8..latin1) ou
reprenez une sauvegarde.

Recode permet aussi de passer tous les accents en mode TeX (c’est à dire
\’e pour é) :

Remarque : l’option -d de recode préserve la syntaxe TeX,
sinon des caractères tels que { serait réécrits en
\{

[rouge]Attention[/rouge] (rappel) l’usage de recode est risqué
car vous risquez de perdre l’original

Malgré un bon encodage, les accents ne s’affichent pas

... dans mon fichier DVI ou PDF, pourquoi ? Afin que LaTeX traite
correctement l’encodage, vous devez lui préciser sous quel encodage le
fichier est enregistré. Le package inputenc le précise :

Qu’en est-il des fichiers HTML ?

Si des pages web personnelles n’affichent plus correctement les accents, vous
rencontrez le même problème. Pour cela, vous pouvez recoder les fichiers de
la même façon que dans le paragraphe précédent. Vous pouvez aussi recoder en
HTML pur (dans ce cas les accents deviennent moins lisibles :
&eacute; au lieu de é) :

Ce qu’il faut retenir de ce passage