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.
Les fichiers LaTeX doivent contenir au moins deux packages pour le traitement des caractères accentués :
\usepackage[T1]{fontenc} %
Pour afficher en DVI ou PDF les accents\usepackage[latin1]{inputenc} %
Car j’écris selon le jeu de caractères ISO-8859-1\usepackage[utf8]{inputenc} %
Car j’écris selon le jeu de caractères UTF-8Vous 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 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.
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é.
... 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 :
... 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
Sous Unix/Linux, ainsi que MacOSX, la commande iconv gère cette conversion.
iconv -f latin1 -t utf8 fichier.tex > fichier-utf8.tex
iconv -f utf8 -t latin1 fichier.tex > fichier-iso.tex
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 -d latin1..utf8 fichier.tex
recode -d utf8..latin1 fichier.tex
Recode permet aussi de passer tous les accents en mode TeX (c’est à dire \’e pour é) :
recode -d latin1..tex fichier.tex
recode -d utf8..tex fichier.tex
recode -d tex..latin1
fichier.tex
recode -d tex..utf8
fichier.tex
Remarque : l’option -d de recode
préserve la syntaxe TeX,
sinon des caractères tels que {
serait réécrits en
\{
Attention (rappel) l’usage de recode est risqué car vous risquez de perdre l’original
... 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 :
\usepackage[latin1]{inputenc} % Car j'écris selon le jeu de
caractères ISO-8859-1
\usepackage[utf8]{inputenc} % Car j'écris selon le jeu de
caractères UTF-8
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 :
é
au lieu de é
) :
recode latin1..h fichier.html
recode h..latin1 fichier.html
recode utf8..h fichier.html
recode h..utf8 fichier.html