HOWTO Unicode
 Bruno Haible,<[email protected]>, traduction : Samuel
 Tribehou, <[email protected]>
 v 0.12, 19 Octobre 1999

 Ce document explique comment configurer votre syst�me Linux pour qu'il
 utilise l'encodage de texte UTF-8.  Ce document est en cours d'�labo�
 ration. Toutes les astuces, suggestions, patchs, URLs sont les bien�
 venus.  NDT : Il a �t� convenu avec l'auteur que seule la pr�sente
 version de ce document serait traduite dans un premier temps, le con�
 tenu changeant pour l'instant trop souvent pour qu'une traduction
 suivie puisse �tre r�alis�e. Reportez vous au site du LDP pour obtenir
 la derni�re version.
 ______________________________________________________________________

 Table des mati�res


















































 1. Introduction

    1.1 Pourquoi Unicode ?
    1.2 Les encodages d'Unicode
       1.2.1 Notes pour les d�veloppeurs C/C++
    1.3 Liens

 2. Configuration de l'affichage

    2.1 La console Linux
    2.2 Fontes �trang�res pour X11
    2.3 Les fontes Unicode pour X11
    2.4 Unicode xterm
    2.5 Divers

 3. Configuration des locales

    3.1 Les fichiers et le kernel
    3.2 Le kernel et les ttys
    3.3 Conversion de donn�es g�n�rales
    3.4 Les variables d'environnement locales
    3.5 Cr�er les fichiers pour le support des locales
    3.6 Ajouter le support pour la biblioth�que C
    3.7 Conversion des catalogues de messages

 4. Applications sp�cifiques.

    4.1 Le r�seau
       4.1.1 rlogin
       4.1.2 telnet
    4.2 Les navigateurs
       4.2.1 Netscape
       4.2.2 Lynx
       4.2.3 Pages de test
    4.3 Les �diteurs
       4.3.1 yudit
       4.3.2 mined98
       4.3.3 vim
       4.3.4 emacs
       4.3.5 Xemacs
       4.3.6 nedit
       4.3.7 xedit
       4.3.8 axe
       4.3.9 pico
       4.3.10 TeX
    4.4 Les logiciels de courrier �lectronique
       4.4.1 pine
       4.4.2 Kmail
       4.4.3 Netscape Communicator
       4.4.4 Emacs (rmail, vm)
    4.5 Autres applications en mode texte
       4.5.1 less
       4.5.2 expand, wc
       4.5.3 col, colcrt, colrm, column, rev, ul
       4.5.4 figlet
       4.5.5 kermit
    4.6 Autres applications X11

 5. Comment faire pour que vos programmes comprennent Unicode

    5.1 C/C++
       5.1.1 Pour le traitement de texte normal
          5.1.1.1 Notes concernant la portabilit�
          5.1.1.2 La biblioth�que libutf8
          5.1.1.3 La m�thode Plan9
       5.1.2 Pour les interfaces utilisateur graphiques
       5.1.3 Pour la manipulation de texte avanc�e
       5.1.4 Pour la conversion
          5.1.4.1 L'impl�mentation iconv d'Ulrich Drepper, contenue dans la GNU glibc-2.2.1
          5.1.4.2 librecode par Fran�ois Pinard
       5.1.5 Les autre approches
    5.2 Java
    5.3 Lisp
    5.4 Ada95


 ______________________________________________________________________

 11..  IInnttrroodduuccttiioonn



 11..11..  PPoouurrqquuooii UUnniiccooddee ??

 Les gens de diff�rents pays utilisent diff�rents caract�res pour
 repr�senter les mots de leur langue natale. De nos jours la plupart
 des applications, y compris les logiciels de courrier �lectronique  et
 les navigateurs, traitent correctement les caract�res 8-bits.  Ils
 peuvent donc traiter et afficher du texte correctement � condition
 qu'il soit repr�sent� dans un jeu de caract�res 8-bits, comme
 ISO-8859-1.

 Il y a bien plus de 256 caract�res dans le monde - pensez au
 cyrillique, � l'h�breu, � l'arabe, au chinois, au japonais au cor�en
 et au tha� -, et de temps � autres, de nouveaux caract�res sont
 invent�s. Les probl�mes que cela induit pour les utilisateurs sont les
 suivants  :


 �   Il est impossible de stocker du texte avec des jeux de caract�res
    diff�rents dans le m�me document. Par exemple, je peux citer des
    journaux russes dans une publication allemande ou fran�aise si
    j'utilise TeX, xdvi et Postscript, mais je ne peux pas le faire
    avec du texte pur.

 �  Tant que chaque document a son propre jeu de caract�res, et que la
    reconnaissance des jeux de caract�res n'est pas automatique,
    l'intervention manuelle de l'utilisateur est in�vitable. Par
    exemple, pour voir la page d'accueil de la distribution Linux
    XTeamLinux http://www.xteamlinux.com.cn/, je dois dire � Netscape
    que la page web est cod�e en GB2312.

 �  De nouveaux symboles comme l'Euro sont invent�s. ISO a publi� un
    nouveau standard ISO-8859-15 qui est en gros identique �
    ISO-8859-1, except� qu'il supprime des caract�res rarement
    utilis�s, comme le vieux symbole mon�taire, remplac� par le signe
    Euro.  Si les utilisateurs acceptent ce standard, ils auront des
    documents dans diff�rents jeux de caract�res sur leur disque, et
    cela deviendra une pr�occupation quotidienne. Mais les ordinateurs
    devraient simplifier le choses, pas les compliquer.

 La solution � ce probl�me est l'adoption d'un jeu de caract�res
 universel. Ce jeu de caract�res est Unicode http://www.unicode.org/.
 Pour plus d'informations sur Unicode, faites man 7 unicode (page de
 man contenue dans le package lpdman-1.20).


 11..22..  LLeess eennccooddaaggeess dd''UUnniiccooddee

 Cela r�duit le probl�me de l'utilisateur (devoir jongler entre
 diff�rents jeux de caract�res) � un probl�me technique : comment
 transporter les caract�res Unicode en utilisant des octets de 8 bits ?
 L'unit� de 8 bits est la plus petite unit� adressable de la plupart
 des ordinateurs et c'est aussi l'unit� utilis�e par les connexions
 r�seau TCP/IP.  Cependant, l'utilisation d'un octet pour la
 repr�sentation d'un caract�re est un accident de l'histoire d� au fait
 que le d�veloppement de l'ordinateur commen�a en Europe et aux �tats-
 Unis, o� l'on pensait que 96 caract�res seraient suffisants pour
 longtemps.

 Il y a fondamentalement quatre fa�ons d'encoder des caract�res Unicode
 dans des octets :


    UUTTFF--88
       128 caract�res sont encod�s en utilisant 1 octet : les
       caract�res ASCII.
       1920 caract�res sont encod� en utilisant deux octets : le latin,
       le grec, le cyrillique, le copte, l'arm�nien, l'h�breu, les
       caract�res arabes.
       63488 caract�res sont encod�s en utilisant 3 octets, le chinois
       et le japonais entre autres.
       Les 2147418112 caract�res restant (non encore assign�s) peuvent
       �tre encod�s en utilisant 4, 5 ou 6 caract�res.  Pour plus
       d'informations sur UTF-8, faites man 7 utf-8 (cette page est
       contenue dans le package ldpman-1.20).


    UUCCSS--22
       Chaque caract�re est repr�sent� par deux octets. Cet encodage
       peut repr�senter seulement les  65536 premiers caract�res
       d'Unicode.


    UUTTFF--1166
       C'est une extension d'UTF-2 qui peut repr�senter 11144112
       caract�res Unicode. Les 65536 premiers caract�res sont
       repr�sent�s par deux octets, les autres par quatre.


    UUCCSS--44
       Chaque caract�re est repr�sent� par 4 octets.

 L'espace n�cessaire pour encoder un texte, comparativement aux
 encodages actuellement en usage (8 bits par caract�res pour les
 langues europ�ennes, plus pour le chinois/japonais/cor�en), est le
 suivant : (Cela a une influence sur l'espace disque, et la vitesse des
 communications r�seau.


    UUTTFF--88
       Pas de changement pour l'ASCII am�ricain, juste quelques
       pourcents suppl�mentaires  pour ISO-8859-1, 50 % de plus pour le
       chinois/japonais/cor�en, 100 % de plus pour le grec et le
       cyrillique.


    UUCCSS--22 eett UUTTFF--1166
       Pas de changement pour le chinois/japonais/cor�en, augmentation
       de 100 % pour l'US ASCII et ISO-8859-1, le grec et le
       cyrillique.


    UUCCSS--44
       Augmentation de 100% pour le chinois/japonais/cor�en. De 300%
       pour l'US ASCII et ISO-8859-1, le grec et le cyrillique.


 �tant donn� la p�nalit� pour les documents am�ricains et europ�ens,
 caus�e par UCS-2, UTF-8 et UCS-4, il semble peu probable que ces
 encodages aient un potentiel pour une utilisation � grande �chelle.
 L'API Win32 Microsoft supporte l'encodage UCS-2 depuis 1995 (au
 moins), cependant cet encodage n'a pas �t� largement adopt� pour les
 documents -SJIS demeure pr�dominant au Japon.

 D'un autre c�t� UTF-8 a le potentiel pour une utilisation � large
 �chelle, puisqu'il ne p�nalise pas les utilisateurs am�ricains et
 europ�ens, et que beaucoup de logiciels de "traitement de texte"
 (NDT : au sens large) n'ont pas besoin d'�tre chang�s pour supporter
 UTF-8.
 Nous allons maintenant expliquer comment configurer votre syst�me
 Linux pour qu'il utilise UTF-8 comme encodage de texte.


 11..22..11..  NNootteess ppoouurr lleess dd��vveellooppppeeuurrss CC//CC++++

 L'approche de Microsoft Win32 rend facile pour les d�veloppeurs la
 production de versions Unicode de leurs programmes : Vous d�finissez
 Unicode ("#define UNICODE") au d�but de votre programme, et changez
 alors un grand nombre d'occurrences de char en TCHAR jusqu'� ce que
 votre programme compile sans Warnings.  Le probl�mes est que vous avez
 au final deux versions de votre programme : une qui comprend le texte
 UCS-2 mais pas les encodages 8-bit, et une autre qui ne comprend que
 les vieux encodages 8-bit.

 En plus, il y a une complication qui affecte UCS-2 et UCS-4 : l'ordre
 de la repr�sentation interne des nombre (``the endianness''). Le
 registre de syst�mes de codage de caract�res de la IANA dit � l'�gard
 de ISO-10646-UCS-2 : "il faut sp�cifier l'ordre de la repr�sentation
 interne des nombres � l'int�rieur du r�seau, le standard ne le
 sp�cifie pas". Cette repr�sentation est "big endian" en contexte
 r�seau, alors que Microsoft recommande dans ses outils de
 d�veloppement C/C++ d'utiliser une repr�sention d�pendante de la
 machine (c.a.d. "little endian" sur les processeurs ix86), et
 d'ajouter une marque de polarit� (BOM) au d�but du document, ou
 d'utiliser des heuristiques bas�es sur la statistique.

 D'un autre c�t� l'approche de UTF-8 garde char* comme type standard
 pour le stockage des cha�nes en C. Il en r�sulte que votre programme
 supportera l'US ASCII, ind�pendamment de toute variable
 d'environnement, et supportera les textes encod�s en ISO-8859-1 et
 UTF-8 � condition que la variable d'environnement LANG soit
 positionn�e en cons�quence.


 11..33..  LLiieennss

 La liste de ressources de Markus Kuhn (mise � jour tr�s
 r�guli�rement) :

 �  http://www.cl.cam.ac.uk/~mgk25/unicode.html

 �  http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html

 Un survol d'Unicode, UTF-8 et des programmes fonctionnant avec UTF-8
 de Roman Czyborra :
 http://czyborra.com/utf/#UTF-8

 Des exemples de fichiers UTF-8 :

 �  Les fichiers quickbrown.txt, utf-8-test.txt, utf-8-demo.txt dans le
    r�pertoire examples dans le package ucs-fonts de Markus Kuhn
    http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz

 �  ftp://ftp.cs.su.oz.au/gary/x-utf8.html

 �  Le fichier iso10646 dans le package trans-1.1.1 de Kosta Kosti
    ftp://ftp.nid.ru/pub/os/unix/misc/trans111.tar.gz

 �  ftp://ftp.dante.de/pub/tex/info/lwc/apc/utf8.html

 �  http://www.cogsci.ed.ac.uk/~richard/unicode-sample.html



 22..  CCoonnffiigguurraattiioonn ddee ll''aaffffiicchhaaggee

 Nous supposons que vous avez d�j� adapt� votre console Linux et la
 configuration de X11 � votre clavier et avez positionn� correctement
 la variable de localisation LANG.  Ceci est expliqu� dans le
 Danish/International HOWTO, et dans les autres HOWTOS nationaux :
 Finish, French, German, Italian, Polish, Slovenian, Spanish, Cyrillic,
 Hebrew, Chinese, Thai, Esperanto.  Mais, s'il vous pla�t, ne suivez
 pas le conseil  donn� dans le Thai-HOWTO vous disant de faire croire
 que vous utilisez des caract�res ISO-8859-1 (U0000..U00FF) alors que
 vous tapez des caract�res Thai (U0E01..U0E5B). Faire cela ne vous
 causera que des probl�mes lorsque vous passerez � Unicode.


 22..11..  LLaa ccoonnssoollee LLiinnuuxx

 Je ne parle pas tellement de la console ici, parce que je ne l'utilise
 que pour rentrer mon login, password, et taper xinit sur les machines
 d�pourvues de xdm.

 Mais revenons � nos moutons : le package kbd-0.99
 ftp://sunsite.unc.edu/pub/Linux/system/keyboards/kbd-0.99.tar.gz, et
 une version largement �tendue, le package console-tools-0.2.2
 ftp://sunsite.unc.edu/pub/Linux/system/keyboards/console-
 tools-0.2.2.tar.gz, contiennent dans le r�pertoire kbd-0.99/src/ (ou
 console-tools-0.22/screenfonttools/) deux programmes : �unicode_start�
 et �unicode_stop�. Quand vous appelez �unicode_start�, la sortie de la
 console est interpr�t�e comme de l'UTF-8. De plus, le clavier est mis
 en mode Unicode (voir "man kbd_mode"). Dans ce mode, les caract�res
 Unicode tap�s par Alt-x1...Alt-xn (o� x1...xn sont les chiffres de
 pav� num�rique) seront �mis en UTF-8. Si votre clavier, ou plus
 pr�cis�ment, votre keymap a des touches  correspondant � des
 caract�res non ASCII(comme le Umlaute allemand), que vous souhaiteriez
 pouvoir �CapsLocker�, vous devez appliquer au kernel le patch
 linux-2.2.9-keyboard.diff ou linux-2.3.12-keyboard.diff.

 Vous voudrez probablement afficher des caract�res de diff�rents
 alphabets sur le m�me �cran. Pour cela, vous aurez besoin d'une fonte
 Unicode pour la console.
 Le package ftp://sunsite.unc.edu/pub/Linux/system/keyboards/console-
 data-1999.08.29.tar.gz contient une fonte
 (LatArCyrHeb-{08,14,16,19}.psf), qui couvre les lettres pour le
 latin, le cyrillique, l'h�breu, et l'arabe. Il supporte les parties 1,
 2, 3, 4, 5, 6, 8, 9, 10 d'ISO-8859 � lui tout seul.  Pour l'installer,
 copiez le dans /usr/lib/kbd/consolefonts/, et ex�cutez
 /usr/bin/setfont /usr/lib/kbd/consolefonts/LatArCyrHeb-14.psf.

 Si vous voulez que le copier-coller marche avec les consoles UTF-8,
 vous aurez besoin du patch linux-2.3.12-console.diff d'Edmund Thomas,
 Grimley Evans et Stanislav Voronyi.





 22..22..  FFoonntteess ��ttrraanngg��rreess ppoouurr XX1111

 N'h�sitez pas � installer des fontes cyrilliques, chinoises,
 japonaises, etc. M�me si ce ne sont pas des fontes Unicodes, elles
 aideront � afficher des documents Unicode : au moins Netscape
 Communicator 4 et Java feront usage des fontes �trang�res si elles
 sont disponibles.

 Les programmes suivants sont utiles pour installer des fontes :

 �  "mkfontdir r�pertoire" pr�pare un r�pertoire de fontes utilisables
    par le serveur X. Il doit �tre ex�cut� apr�s avoir install� les
    fontes dans un r�pertoire.

 �  "xset fp+ r�pertoire" ajoute un r�pertoire au chemin de fontes
    actuel du serveur X. Pour que ce soit permanent, ajoutez une ligne
    "FontPath" � votre fichier /etc/XF86Config, dans la section
    "Files".

 �  "xset fp rehash" doit �tre ex�cut� apr�s avoir appel� mkfontdir sur
    un r�pertoire qui est d�j� contenu dans le chemin de fontes actuel
    du serveur X.

 �  "xfontsel" vous permet de parcourir les fontes install�es en
    filtrant selon les diverses propri�t�s des fontes.

 �  "xlsfonts -fn motif-de-recherche" liste toutes les fontes qui
    correspondent � un motif de recherche. Il affiche aussi diverses
    propri�t�s des fontes. En particulier, "xlsfonts -ll -fn fonte"
    liste les propri�t�s de la fonte CHARSET_REGISTRY et
    CHARSET_ENCODING, qui ensemble d�terminent l'encodage de la fonte.

 �  "xfd -fn fonte" affiche une fonte page par page.

 Les fontes suivantes sont disponibles gratuitement (liste non
 exhaustive) :


 �  Celle contenues dans XFree86, quelquefois contenues dans un package
    s�par�. Par exemple, la SuSE a seulement les fontes 75 dpi normales
    dans le package "xf86" de base. Les autres fontes sont dans les
    packages "xfnt100", "xfntbig", "xfntcyr", "xfntscl".

 �  Les fontes internationales pour Emacs,
    ftp://ftp.gnu.org/pub/gnu/intlfonts/intlfonts-1.1.tar.gz.  Comme il
    a �t� mentionn� pr�c�demment, elles sont utiles m�me si vous
    pr�f�rez XEmacs � GNU Emacs,  ou m�me si vous n'utilisez pas Emacs
    du tout.


 22..33..  LLeess ffoonntteess UUnniiccooddee ppoouurr XX1111

 Les applications qui souhaitent pouvoir afficher du texte utilisant
 diff�rentes alphabets (comme le cyrillique et le grec) en m�me temps,
 peuvent le faire en utilisant les diff�rentes fontes X pour chaque
 partie de texte.  C'est ce que font Netscape Communicator et Java.
 Cependant, cette approche est plus compliqu�e, parce que au lieu de
 travailler avec "Font" et "XFontStruct", le programmeur devra utiliser
 "XFonSet", et aussi parce que toutes les fontes dans le jeu de fontes
 doivent avoir les m�mes dimensions.


 �  Markus Kuhn a assembl� des fontes � largeur fixe (fixed width) de
    75 dpi avec Unicode couvrant le latin, le grec, le cyrillique,
    l'arm�nien, le g�orgien, l'h�breu, et les �critures symboliques.
    Elles couvrent les parties 1 � 10 et 13 � 15 de ISO-8859 en un seul
    jeu de fontes.  Cette fonte est n�cessaire pour utiliser un xterm
    en mode UTF-8.  http://www.cl.cam.ac.uk/~mgk25/download/ucs-
    fonts.tar.gz

 �  Roman Czyborra a assembl� une fonte 8x16/16x16  75 dpi avec
    l'encodage Unicode couvrant une partie �norme d'Unicode.
    Tel�chargez unifont.hex.gz et hex2bdf depuis
    http://czyborra.com/unifont/ Elle n'est pas � largeur fixe : 8
    pixels de large pour les caract�res europ�ens, 16 pour les
    caract�res chinois. Instructions d'installation :


      $ gunzip unifont.hex.gz
      $ hex2bdf < unifont.hex > unifont.bdf
      $ bdftopcf -o unifont.pcf unifont.bdf
      $ gzip -9 unifont.pcf
      $ cp unifont.pcf.gz /usr/X11R6/lib/X11/fonts/misc
      $ cd usr/X11R6/lib/X11/fonts/misc
      $ mkfontdir
      $ xset fp rehash





 �  Primoz Peterlin a assembl� un famille de fontes ETL couvrant le
    latin, le grec, le cyrillique, l'arm�nien, le g�orgien, et
    l'h�breu.  ftp://ftp.x.org/contrib/fonts/etl-unicode.tar.gz.
    Utilisez le programme "bdftopcf" pour l'installer.


 22..44..  UUnniiccooddee xxtteerrmm

 xterm fait partie de X11R6 et XFree86,  mais il est maintenu
 s�par�ment par Tom Dickey.
 http://www.clark.net/pub/dickey/xterm/xterm.html.  Les nouvelles
 versions (patch niveau 109 et plus) supportent la conversion des
 touches (keystrokes) en UTF-8 avant de les envoyer � l'application qui
 tourne dans le xterm, et l'affichage des caract�res Unicode que
 l'application renvoie comme une s�quence d'octets UTF-8.

 Pour obtenir un xterm UTF-8 fonctionnel, vous devez :


 �  Rapatrier http://www.clark.net/pub/dickey/xterm/xterm.tar.gz.

 �  Le configurer en ex�cutant "./configure -enable-wide-chars...",
    puis le compiler et l'installer.

 �  Avoir une fonte Unicode � largeur fixe install�e. ucs-fonts.tar.gz
    de Markus Kuhn (voir ci-dessus) est fait pour �a.

 �  Lancer "xterm -u8 -fn fixed". L'option "-u8" enclenche le support
    d'Unicode et d'UTF-8. La fonte "fixed" est celle de Markus Khun.

 �  Jeter un oeil aux fichiers-exemples contenus dans le package ucs-
    fonts de Markus Khun :



      $ cd .../ucs-fonts
      $ cat quickbrown.txt
      $ cat utf-8-demo.txt



 Vous devriez voir (entre autre) des caract�res grecs et cyrilliques.

 �  Pour configurer xterm pour qu'il utilise le support UTF-8 d�s le
    lancement, ajoutez la ligne "XTerm*utf8:1" � votre $HOME/.Xdefaults
    (pour vous seul). Je ne recommande pas de changer directement
    /usr/X11R6/lib/X11/app-defauts/XTerm, parce que vos changements
    seront effac�s lorsque vous installerez une nouvelle version de
    XFree86.

 �  Si vous avez aussi chang� le nom de la fonte, vous aurez besoin
    d'une ligne "*VT100*font: votre-fonte" dans votre fichier
    $HOME/.Xdefaults.  Pour les fontes "fixes" ce n'est pas n�cessaire,
    puisque "fixed" est la valeur par d�faut de toute fa�on.


 22..55..  DDiivveerrss

 Un petit programme qui teste si une console Linux est en mode UTF-8
 peut �tre trouv� dans le package
 ftp://sunsite.unc.edu/pub/Linux/system/keyboards/x-lt-1.18.tar.gz de
 Ricardas Cepas. Ce sont les fichiers testUTF-8.c et testUTF8.c.


 33..  CCoonnffiigguurraattiioonn ddeess llooccaalleess



 33..11..  LLeess ffiicchhiieerrss eett llee kkeerrnneell

 Vous pouvez maintenant utiliser n'importe quel caract�re Unicode dans
 les noms de fichiers. Ni le kernel ni aucun utilitaire syst�me ne
 n�cessite de modifications.  Ceci parce que les noms de fichiers dans
 le kernel peuvent �tre n'importe quoi qui ne contient ni octet nul, ni
 '/' (utilis� pour d�limiter les sous-r�pertoires).  Quand ils sont
 encod�s en utilisant UTF-8, les caract�res non-ASCII ne seront jamais
 encod�s en utilisant un octet nul ou un slash.  La seule cons�quence
 est que les noms de fichiers et de r�pertoires occupent plus d'octets
 qu'ils ne contiennent de caract�res.  Par exemple, un nom de fichier
 contenant cinq caract�res grecs appara�tra pour le kernel comme un nom
 de fichier de 10 octets.  Le kernel ne sait pas (et n'a pas besoin de
 savoir) que ces octets sont affich�s en grec.

 C'est une th�orie g�n�rale, qui est vraie tant que vos fichiers
 restent sur un syst�me Linux.  Sur les syst�mes de fichiers utilis�s
 depuis d'autres syst�mes d'exploitation,  mount poss�de des options
 pour contr�ler la conversion des noms de fichiers de/vers UTF-8 :


 �  Les syst�mes de fichiers "vfat" ont  une option "utf8".
    Voir le fichier
    file:/usr/src/linux/Documentation/filesystems/vfat.txt.  Quand vous
    donnez � mount une option "iocharset" diff�rente de celle utilis�e
    par d�faut (qui est "iso8859-1"), les r�sultats avec et sans
    l'option "utf8" ne sont pas coh�rents. Par cons�quent, je ne
    conseille pas d'utiliser l'option "iocharset" de mount.

 �  Les syst�mes de fichiers "msdos", "umsdos" ont la m�me option de
    montage, mais il semble qu'elle n'ait pas d'effet.

 �  Le syst�me de fichiers "iso9660" a une option de montage "utf8".
    Voir file:/usr/src/linux/Documentation/filesystems/isofs.txt

 �  � partir des kernels Linux 2.2.x, le syst�me de fichier "ntfs" a
    une option de montage"utf8".
    Voir file:/usr/src/linux/Documentation/filesystems/ntfs.txt

 Les autres syst�mes de fichiers (nfs, smbfs, ncpfs, hpfs, etc.) ne
 convertissent pas les noms de fichiers. Par cons�quent ils accepteront
 les noms de fichier Unicode encod�s en UTF-8 seulement si l'autre
 syst�me d'exploitation les supporte.  Rappelez vous que pour qu'une
 option de montage soit appliqu�e aux prochains montages,  vous devez
 l'ajouter � la quatri�me colonne de la ligne correspondante dans
 /etc/fstab.


 33..22..  LLee kkeerrnneell eett lleess ttttyyss

 Les ttys sont en quelque sorte des tubes bidirectionnels entre deux
 programmes, autorisant des choses comme la r�p�tition (echoing) ou
 l'�dition de la ligne de commande.  Quand dans un xterm, vous ex�cutez
 la commande "cat" sans arguments, vous pouvez entrer et �diter autant
 de lignes que vous voulez, elles seront r�p�t�es en retour ligne par
 ligne.  Les actions d'�dition du kernel ne sont pas correctes, en
 particulier les touche Backspace et Tab ne seront pas trait�es
 correctement.

 Pour r�soudre ce probl�me, vous devez :


 �  Appliquer le patch linux-2.0.35-tty.diff ou linux-2.2.9-tty.diff ou
    linux-2.3.12-tty.diff et recompiler votre kernel.

 �  Si vous utilisez la glibc2, appliquer le patch glibc211-tty.diff et
    recompiler votre libc. Si vous n'�tes pas aussi aventureux, il
    suffit de patcher une version d�j� install�e avec le fichier
    inclus : glibc-tty.diff

 �  Appliquer le patch stty.diff � GNU sh-utils-1.16b, et recompiler le
    programme stty. Testez le ensuite en utilisant stty -a et stty
    iutf8.

 �  Ajouter la commande stty iutf8 au script unicode_start, et la
    commande stty -iutf8 au script unicode_stop.

 �  Appliquer le patch xterm.diff � xterm-109, et recompiler "xterm",
    puis le tester en lan�ant xterm -u8 / xterm +u8 et en lan�ant stty
    -a et un cat interactif � l'int�rieur.

 Pour que ce changement soit persistant m�me � travers rlogin et
 telnet, vous devrez aussi :


 �  D�finir des nouvelles valeurs pour la variable d'environnement
    TERM, "linux-utf8" comme alias pour "linux", et "xterm-utf8" comme
    alias pour "xterm". Si vous avez la biblioth�que ncurses sur votre
    syst�me et la base de donn�es /usr/lib/terminfo (ou
    /usr/share/terminfo), faites cela en �xecutant


      $ tic linux-utf8 . terminfo
      $ tic xterm-utfu . terminfo




 sur un compte utilisateur (cela cr�era les entr�es terminfo dans votre
 repertoir $HOME/.terminfo).  Voil� linux-utf8.terminfo et xterm-
 utf8.terminfo.
 Je ne recommande pas de lancer ces commandes en tant que root, parce
 que cela cr�era les entr�es terminfo dans /urs/lib/terminfo, o�, elles
 seront probablement effac�es lors de la prochaine mise � jour de votre
 syst�me.  Si votre syst�me poss�de un fichier /etc/termcap, vous
 devriez aussi �diter ce fichier : copiez les entr�es linux et xterm,
 et donnez leur les nouveaux noms "linux-utf8" et "xterm-utf8".  Le
 fichier  termcap.diff contient un exemple.

 �  � chaque fois que vous appelez "unicode_start" et "unicode_stop"
    depuis la console, ex�cutez aussi "export TERM =linux-utf8", ou
    "export TERM=linux", respectivement.

 �  Appliquer le patch xterm2.diff � xterm-0.9, recompiler "xterm", et
    et enlever toutes les lignes "XTerm*termName" des fichiers
    /usr/X11R6/lib/X11/app-defaults/XTerm et $HOME/.Xdefaults.
    Maintenant xterm donne � TERM la valeur "xterm-utf8" plut�t que
    "xterm".

 �  Appliquer les patches netkit.diff, netkitb.diffet telnet.diff puis
    recompiler "rlogind" et "telnetd". Maintenant rlogin et telnet
    mettent tty en mode d'�dition UTF-8 � chaque fois que la variable
    d'environnement TERM est "linux-ut8" ou "xterm-utf8".


 33..33..  CCoonnvveerrssiioonn ddee ddoonnnn��eess gg��nn��rraalleess

 Vous aurez besoin d'un programme pour convertir vos fichiers texte
 locaux (probablement ISO-8859-1) en UTF-8.  L'alternative serait de
 continuer � utiliser des textes qui utilisent diff�rents encodages sur
 la m�me machine, mais ce n'est pas une bonne solution sur le long
 terme.  Un de ces programmes est "iconv", qui est livr� avec la
 glibc-2.1. Tapez simplement


      icon --from-code=ISO-8859-1 --to-code=UTF-8 < vieux_fichier > nouveau_fichier




 Voici deux scripts shell tr�s pratiques, appel�s  "i2u" i2u.sh (pour
 conversion de ISO � UTF) et  "u2i" u2i.sh (pour conversion de UTF �
 ISO).  [skip adapt..]

 Si vous n'avez pas la glibc-2.1 et iconv install�s, vous pouvez
 utiliser GNU recode 3.5 � la place.  "i2u" i2u_recode.sh est "recode
 ISO-8859-1..UTF-8" "u2i" u2i_recode.sh est "recode UTF-8..ISO-8859-1".
 ftp://ftp.iro.umontreal.ca/pub/recode/recode-3.5.tar.gz
 ftp://ftp.gnu.org/pub/gnu/recode/recode-3.5.tar.gz
 Notes : vous devez utiliser GNU recode 3.5 ou plus. Pour compiler GNU
 recode sur des plateformes sans glibc-2 (c'est � dire sur toutes les
 plateformes sauf les syst�mes Linux r�cents), vous devez le configurer
 avec "--disable-nls", autrement l'�dition des liens �chouera.

 Sinon, vous pouvez aussi utiliser CLISP � la place.  Voici "i2u" et
 "u2i" en version lisp : i2u.lsp et u2i.lsp.
 Note : Vous devez avoir une version de CLISP qui date au plus de
 juillet 1999.
 ftp://clisp.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz
 D'autres programmes de conversion de donn�es existent, mais ils sont
 moins puissants que GNU recode. Ce sont

 �  "trans"
    ftp://ftp.informatik.uni-
    erlangen.de/pub/doc/ISO/charsets/trans113.tar.gz

 �  "tcs" qui vient du syst�me d'exploitation Plan9 :
    ftp://ftp.informatik.uni-
    erlangen.de/pub/doc/ISO/charsets/tcs.tar.gz


 �  et "utrans/uhtrans/hutrans" par G.Adam Stanislav
    <[email protected]>
    ftp://ftp.cdrom.com/pub/FreeBSD/distfiles/i18ntools-1.0.tar.gz


 33..44..  LLeess vvaarriiaabblleess dd''eennvviirroonnnneemmeenntt llooccaalleess

 Vous pouvez avoir les variables d'environnement suivantes
 positionn�es, contenant les noms de locales :


    LLAANNGGUUAAGGEE
       Remplacement pour LC_MESSAGES. Seulement utilis� par GNU
       gettext.


    LLCC__AALLLL
       Remplacement pour toute les autres variables LC_* :


    LLCC__CCTTYYPPEE,, LLCC__MMEESSSSAAGGEESS,, LLCC__CCOOLLLLAATTEE,, LLCC__NNUUMMEERRIICC,, LLCC__MMOONNEETTAARRYY,, LLCC__TTIIMMEE
       Ce sont des variables individuelles pour : le type des
       caract�res et leur encodage, les messages en langue maternelle,
       les r�gles de classement, le format des nombres, le format des
       montants mon�taires, l'affichage de la date et de l'heure.


    LLAANNGG
       Valeur par d�faut pour toutes les variables LC_*

 (Voir `man 7 locale' pour une description d�taill�e.)

 Chacune des variables LC_* et LANG peuvent contenir un nom de locale
 de la forme suivante :

      language[_territory[.codeset]][@modifier]


 O� _l_a_n_g_u_a_g_e est un code de langue ISO 639 (en minuscules), _t_e_r_r_i_t_o_r_y
 est un code de pays ISO 3166 (en majuscules), _c_o_d_e_s_e_t d�signe une
 table de caract�res, et _m_o_d_i_f_i_e_r d'autres attributs particuliers (par
 pour exemple indiquer un dialecte particulier d'une langue, ou une
 orthographe non standard).

 LANGUAGE peut contenir plusieurs noms de locale, s�par�s  par deux
 points (:).

 Pour dire � votre syst�me et � toutes les applications que vous
 utilisez UTF-8, vous devez ajouter un suffixe d'UTF-8 � vos noms de
 locales. Par exemple, si vous utilisiez


      LANGUAGE=de:fr:en
      LC_CTYPE=de_DE




 vous le changeriez en


      LANGUAGE=de.UTF-8:fr.UTF-8:en.UTF-8
      LC_CTYPE=de_DE.UTF-8



 33..55..  CCrr��eerr lleess ffiicchhiieerrss ppoouurr llee ssuuppppoorrtt ddeess llooccaalleess

 Si vous avez la glibc-2.1 ou glibc-2.1.1 ou glibc-2.1.2 install�e,
 v�rifiez d'abord en utilisant "localedef -help" que le r�pertoire
 syst�me pour le tables de caract�res est /usr/share/i18n/charmaps.
 Puis appliquez au fichier /usr/share/i18n/charmaps/UTF8 le patch
 glibc21.diff ou glibc211.diff ou glibc212.diff, respectivement.  Puis
 cr�ez les fichiers de support pour toute les locales UTF-8 que vous
 voulez utiliser, par exemple :



      $ localedef -v -c -i de_DE -f UTF8 /usr/share/locale/de_DE.UTF-8




 G�n�ralement vous n'avez pas besoin de cr�er des variables appel�es
 "de" ou "fr" sans suffixe pour le code du pays, parce que ces locales
 sont normalement utilis�es seulement par la variable LANGUAGE, et pas
 par les variables LC_*. De plus LANGUAGE est seulement utilis� en
 remplacement de LC_MESSAGES.


 33..66..  AAjjoouutteerr llee ssuuppppoorrtt ppoouurr llaa bbiibblliiootthh��qquuee CC

 La glibc-2.2 supportera les locales multi-octets (de plusieurs
 octets), en particulier les locales UTF-8 cr��es plus haut. Mais les
 glibc-2.1 et 2.1.1 ne la supportent pas r�ellement. Par cons�quent le
 seul effet r�el de la cr�ation des fichiers
 /usr/local/share/de_DE.UTF-8/* ci dessus est que setlocale(LC_ALL,"")
 retournera "de_DE.UTF-8", conform�ment � vos variables
 d'environnement, au lieu d'enlever le suffixe "UTF-8".

 Pour ajouter le support pour la locale UTF-8, vous devriez compiler et
 installer la biblioth�que 'libutf8_plug.so', depuis
 libutf8-0.5.2.tar.gz.  Puis vous pouvez positionner la variable
 d'environnement LD_PRELOAD pour qu'elle pointe sur la biblioth�que
 install�e :


      export LD_PRELOAD=/usr/local/lib/libutf8_plug.so




 Alors, dans chaque programme lanc� avec cette variable d'environnement
 positionn�e, les fonctions de libutf8_plug.so seront appel�es � la
 place des originales dans /lib/libc.so.6. Pour plus d'informations sur
 LS_PRELOAD, voyez "man 8 ld.so".

 Tout cela ne sera plus n�cessaire quand la glibc-2.2 sortira.


 33..77..  CCoonnvveerrssiioonn ddeess ccaattaalloogguueess ddee mmeessssaaggeess

 Maintenant ajoutons un contenu � ces nouvelles locales. Les commandes
 /bin/sh suivantes convertiront vos catalogues de messages au format
 UTF-8. Elles doivent �tre lanc�es en tant que root, et n�cessitent les
 programmes 'msgfmt' et 'msgunfmt' de GNU gettext-0.10.35 convert-
 msgcat.sh.
 Ceci non plus ne sera plus n�cessaire une fois que la glibc-2.2 sera
 sortie, parce qu'alors la fonction gettext convertira les cha�nes de
 caract�res de fa�on appropri�e depuis la table de caract�res du
 traducteur vers la table de caract�res de l'utilisateur, en utilisant
 soit iconv soit librecode.
 44..  AApppplliiccaattiioonnss sspp��cciiffiiqquueess..



 44..11..  LLee rr��sseeaauu



 44..11..11..  rrllooggiinn

 Marche bien avec les patches mentionn�s pr�c�demment.


 44..11..22..  tteellnneett

 Telnet n'est pas ne traite pas les caract�res 8-bits (il n'est
 pas"8-bit-clean") par d�faut. Pour pouvoir envoyer des codes de
 touches Unicode � un h�te distant, vous devez mettre telnet en mode
 "outbinary". Il y a deux fa�ons de faire cela :



      $ telnet -L <hote>




 et



      $telnet
      telnet> set outbinary
      telnet> open <hote>




 en outre, utilisez les patches mentionn�s pr�c�demment.


 44..22..  LLeess nnaavviiggaatteeuurrss



 44..22..11..  NNeettssccaappee

 Netscape 4.05 ou plus peut afficher des documents HTML en encodage
 UTF-8. Tout ce qu'un document n�cessite est la ligne suivante, situ�e
 entre les tags <head> et </head>


      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">




 Netscape 4.05 ou plus peut aussi afficher du HTML et du texte en
 encodage UCS-2 avec le [byte-order mark].
 http://www.netscape.com/computing/download/


 44..22..22..  LLyynnxx

 Lynx 2.8 a un �cran d'options (touche 'O') qui permet de s�lectionner
 la table de caract�res utilis�e � l'affichage. Quand il, tourne dans
 un xterm ou depuis une "Linux console" en mode UTF-8, s�lectionnez
 "UNICODE UTF-8".

 Maintenant, encore une fois, tout ce qu'un document n�cessite est la
 ligne suivante, entre les tags <head> et </head> :


      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">




 Quand vous visualisez des fichiers texte encod�s en UTF-8, vous devez
 aussi passer � la ligne de commande  l'option
 "-assume_local_charset=UTF-8" (affecte seulement les URLs de type
 file:/...) ou "-assume_charset=UTF-8" (affecte toute les URLs). Sinon,
 dans Lynx-2.2.8, vous pouvez, dans l'�cran d'options,  changer le jeu
 de caract�res suppos� par d�faut ("assumed document character set") en
 "utf-8".

 Il y a aussi, dans l'�cran d'options, une option permettant de choisir
 le jeu de caract�res par d�faut ("preferred document character set"),
 mais cela n'a pas d'effet, au moins avec les URLs file:/... et
 http://... servies par apache-1.3.0.

 Cependant, il y a un probl�me concernant les espaces et les fins de
 lignes : regardez � la section russe de x-utf-8.html, ou
 utf-8-demo.txt.

 Notez aussi que dans Lynx-2.8.2, configur� avec l'option -enable-
 prettysrc, les jolies combinaisons de couleurs ne marchent plus
 correctement quand le jeu de caract�res pour l'affichage � �t�
 positionn� � "UNICODE-UTF-8". Ce probl�me est r�solu par le patch
 lynx282.diff.

 D'apr�s les d�veloppeurs de lynx : "Pour une utilisation s�rieuse de
 l'affichage UTF-8 avec Lynx, il est toujours recommand� de compiler
 avec la biblioth�que slang et -DSLANG_MBCS_HACK."
 ftp://ftp.gnu.org/pub/gnu/lynx/lynx-2.8.2.tar.gz
 http://lynx.browser.org/
 http://www.slcc.edu/lynx/
 ftp://lynx.isc.org/


 44..22..33..  PPaaggeess ddee tteesstt

 Des pages de test pour les navigateurs peuvent �tre trouv�es sur les
 pages d'Alan Wood et James Kass  :
 http://www.hclrss.demon.co.uk/unicode/#links,
 http://home.att.net/~jameskass/



 44..33..  LLeess ��ddiitteeuurrss



 44..33..11..  yyuuddiitt

 Le programme yudit de G�sp�r Sinai http://czyborra.com/yudit/ est un
 �diteur de texte unicode de premier ordre pour le syst�me X Window.
 Il supporte le traitement simultan� de beaucoup de langages, m�thodes
 d'entr�e, conversions de caract�res locaux standards.  Il est �quip�
 pour supporter l'entr�e de texte dans tous les langages avec seulement
 un clavier anglais, en utilisant des tables de configuration du
 clavier.
 Il peut �tre compil� en 3 versions : interface graphique Xlib , KDE,
 ou Motif.

 Il peut �tre personnalis� tr�s facilement. Typiquement, vous voudrez
 modifier votre fonte. Depuis le menu font je choisis "Unicode". Puis,
 puisque la commande "xlsfonts '*_*-iso10646-1" donnait toujours un
 affichage ambigu, je choisis un taille de fonte de 13 (pour
 correspondre � la fonte fixe de 13 pixels de Markhus Kuhn).

 Ensuite, vous personnaliserez votre m�thode d'entr�e. Les m�thodes
 "Straight", "Unicode" et "SGML" sont les plus int�ressantes. Pour
 avoir des d�tails sur les autres m�thodes d'entr�es incorpor�es,
 regardez dans "/usr/local/share/yudit/data/".

 Pour qu'un changement devienne un r�glage par d�faut pour les
 prochaines sessions, �ditez votre fichier $HOME/.yuditrc.

 Les fonctionnalit�s g�n�rales de l'�diteur sont limit�es � l'�dition,
 le copier-coller, et le "chercher-remplacer" (search&replace).  Pas de
 fonction d'annulation (undo).


 44..33..22..  mmiinneedd9988

 mined98 est un petit �diteur de texte de Michiel Huisjes, Achim M�ller
 et Thomas Wolff : http://www.inf.fu-berlin.de/~wolff/mined.html.  Il
 vous permet d'�diter des fichier encod�s en UTF-8 ou 8 bits, dans un
 xterm UTF-8 ou 8-bits.  Il dispose aussi de puissantes fonctionnalit�s
 pour entrer les caract�res Unicode.

 Quand mined est lanc�  dans un xterm ou une console Linux en mode
 UTF-8, vous devriez positionner la variable d'environnement utf8_term,
 ou appeler mined avec l'option -U.

 mined vous permet d'�diter des fichiers encod�s aussi bien en UTF-8
 qu'en 8-bits. Par d�faut il utilise un heuristique d'auto-d�tection.
 Si vous ne voulez pas vous reposer sur des heuristiques, passez
 l'option -u � la ligne de commande lorsque vous �ditez un fichier
 UTF-8, ou +u lorsque vous �ditez un fichier encod� en 8 bits.  Vous
 pouvez changer l'interpr�tation � n'importe quel moment depuis
 l'�diteur : il affiche l'encodage ("L:h" pour du 8-bits, "U:h" pour de
 l'UTF-8) dans la ligne de menu. Vous pouvez cliquer sur le premier de
 ces caract�res pour le changer.

 Quelques b�mols :

 �  Le binaire Linux dans la distribution est d�pass� et ne supporte
    pas UTF-8. Vous devrez recompiler un binaire � partir des sources.
    Installez ensuite src/mined dans /usr/local/bin/mined et
    doc/mined.help dans /usr/local/man/cat1/mined.1, de fa�on � ce que
    ESC h le trouve.

 �  mined ignore votre r�glage "stty erase". Quand votre touche
    backspace renvoie un code ASCII 127, et que vous avez positionn�
    "stty erase ^?" - ce qui est finalement le r�glage le plus s�r -
    vous devez appeler mined avec l'option -B de fa�on � ce que la
    touche backspace efface le caract�re � gauche du curseur.

 �  Les touches "Home", "End", "Delete" ne marchent pas.


 44..33..33..  vviimm

 vim (depuis la version 5.4m) supporte les locales multi-octets, mais
 seulement si la biblioth�que X a le m�me support, et seulement pour
 les encodages avec au moins deux octets par caract�res, i.e les
 encodages ISO-2022. Il ne supporte pas l'UTF-8.


 44..33..44..  eemmaaccss

 Avant tout, vous devriez lire la section "International Character Set
 Support" (noeud "International") dans le manuel d'Emacs. En
 particulier, notez que vous devez d�marrer Emacs avec la commande


      $ emacs -fn fontset-standard




 pour qu'il utilise un jeu de fontes comprenant beaucoup de caract�res
 internationaux.

 � court terme, le package emacs-utf
 http://www.cs.ust.hk/faculty/otfried/Mule/ d'Otfried Cheong procure un
 "unicode-utf-8" pour Emacs. Apr�s avoir compil� le programme
 "utf2mule" et l'avoir install� quelque part dans votre $PATH,
 installez aussi unicode.el, muleuni-1.el, unicode_char.el quelque
 part, et ajoutez les lignes


           (setq load-path (cons "/home/user/somewhere/emacs" load-path))
           (if (not (string-match "XEmacs" emacs-version))
             (progn
               (require 'unicode)
               (if (eq window-system 'x)
                 (progn
                   (create-fontset-from-fontset-spec
                     "-misc-fixed-medium-r-normal-*-12-*-*-*-*-*-fontset-standard")
                   (create-fontset-from-fontset-spec
                     "-misc-fixed-medium-r-normal-*-13-*-*-*-*-*-fontset-standard")
                   (create-fontset-from-fontset-spec
                     "-misc-fixed-medium-r-normal-*-14-*-*-*-*-*-fontset-standard")
                   (create-fontset-from-fontset-spec
                     "-misc-fixed-medium-r-normal-*-15-*-*-*-*-*-fontset-standard")
                   (create-fontset-from-fontset-spec
                     "-misc-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard")
                   (create-fontset-from-fontset-spec
                     "-misc-fixed-medium-r-normal-*-18-*-*-*-*-*-fontset-standard")))))




 � votre $HOME/.emacs. Pour activer un des jeux de fontes, utilisez
 l'item "Set Font/FonSet" du menu mule, ou Shift-down-mouse-1.  Pour
 l'instant les jeux de fontes avec des hauteurs de 15 et 13 ont le
 meilleur support Unicode, gr�ce aux fontes 9x15 et 6x13 de Markus
 Kuhn. Pour ouvrir un fichier encod� en UTF-8, vous pouvez taper


      M-x universal-coding-system-argument unicode-utf8 RET
      M-x find-file filename RET




 ou




 C-x RET c unicode-utf8 RET
 C-x C-f filename RET




 Notez que cela marche avec Emacs seulement en mode fen�tre, pas en
 mode terminal.

 Richard Stallman pr�voit � long terme d'ajouter un support d'UTF-8
 int�gr� � Emacs.


 44..33..55..  XXeemmaaccss


 (Cette section est �crite par Gilbert Baumann.)

 Voici comment apprendre � XEmacs (20.4 configur� avec MULE) l'encodage
 UTF-8. Malheureusement vous aurez besoin des sources pour pouvoir le
 patcher.

 D'abord vous aurez besoin de ces fichiers fournis par Tomohiko
 Morioka :

 http://turnbull.sk.tsukuba.ac.jp/Tools/XEmacs/xemacs-21.0-b55-emc-
 b55-ucs.diff

 http://turnbull.sk.tsukuba.ac.jp/Tools/XEmacs/xemacs-ucs-
 conv-0.1.tar.gz

 Le .diff est un diff pour les sources C. Le tarball contient du code
 elisp, qui fournit beaucoup de tables de code qui permettent la
 conversion depuis et vers Unicode. Comme le nom du diff le sugg�re, il
 est pr�vu pour XEmacs-21. J'ai eu besoin d'aider un peu 'patch'.  La
 diff�rence la plus notable avec mes sources XEmacs-20.4 est que file-
 coding.[ch] �tait appel� mule-coding.[ch]

 Pour ceux qui connaissent peu XEmacs-MULE (comme moi) voici un guide
 rapide :

 Ce que nous appelons un encodage est appel� par MULE "coding system".
 Les commandes les plus importantes sont :



      M-x set-file-coding-system
      M-x set-buffer-process-coding-system [comint buffer]




 et la variable 'file-coding-system-alist', qui guide 'find-file' pour
 qu'il trouve l'encodage utilis�. Une fois que tout marchait, la
 premi�re chose que j'ai faite fut ceci <gb-hacks.el>.

 Ce code cherche une ligne de mode sp�ciale commen�ant par _*_ quelque
 part dans les 600 premiers octets du fichier qui va �tre ouvert. Si
 cette ligne contient un champ "Encoding: xyz;" et que l'encodage xyz
 ("coding system" dans le langage d'Emacs) existe, il le s�lectionne.
 Donc maintenant vous pouvez utiliser :





 ;;;  _*_ Mode: Lisp; Syntax: Common-Lisp; Package: CLEX; Encoding:
 utf-8; _*_




 et Emacs entrera en mode utf-8 � partir de l�.

 Une fois que tout marchait, j'ai d�fini une macro pour \u03BB (lambda
 grec) comme ceci :



      (defmacro \u03BB (x) '(lambda .,x))





 44..33..66..  nneeddiitt



 44..33..77..  xxeeddiitt

 En th�orie, xedit devrait �tre capable d'�diter des fichiers UTF-8 si
 vos locales sont configur�es en cons�quence (voir au dessus), et que
 vous ajoutez la ligne "Xedit*international: true" � votre fichier
 $HOME/.Xdefaults.  En pratique, il reconna�tra les encodages UTF-8 des
 caract�res non ASCII, mais il les affichera comme des s�quences de
 caract�res "@".


 44..33..88..  aaxxee

 En th�orie, axe devrait �tre capable d'�diter des fichiers UTF-8 si
 vos locales sont configur�es en cons�quence (voir au dessus), et que
 vous ajoutez la ligne "Axe*International: true" � votre fichier
 $HOME/.Xdefaults.  En pratique, il vous laissera simplement un joli
 fichier core.


 44..33..99..  ppiiccoo



 44..33..1100..  TTeeXX

 Les distributions de teTex 0.9 (et sup�rieures) contiennent  une
 adaptation Unicode de TeX, appel�e Omega
 (http://www.gutenberg.eu.org/omega/
 ftp://ftp.ens.fr/pub/tex/yannis/omega), mais est-ce que quelqu'un
 conna�trait un tutorial sur ce syst�me ?

 Autres liens peut-�tre en rapport :
 http://www.dante.de/projekte/nts/NTS-FAQ.html,
 ftp://ftp.dante.de/pub/tex/language/chinese/CJK/


 44..44..  LLeess llooggiicciieellss ddee ccoouurrrriieerr ��lleeccttrroonniiqquuee

 MIME : RFC 2279 d�finit les jeux de caract�res UTF-8 et MIME, qui
 peuvent �tre convertis en encodage 8-bits, quoted-printable ou base64.
 L'ancienne norme MIME UTF-7 (RFC 2152) est consid�r�e comme �tant
 obsol�te ("deprecated") et ne devrait plus �tre utilis�e.

 Les clients mail sortis apr�s le 1er janvier 1999 devraient �tre
 capables d'envoyer et d'afficher des courriers encod�s en UTF-8, sous
 peine d'�tre consid�r�s comme incomplets. Mais ces courriers doivent
 contenir les �tiquettes (labels) MIME :



      Content-Type: text/plain; charset=UTF-8
      Content-Transfer-Encoding: 8-bit




 Envoyer simplement un fichier UTF-8 vers "mail" via un _p_i_p_e sans faire
 attention aux labels MIME ne fonctionnera pas.  Les gens qui
 impl�mentent des clients de courrier devraient jeter un oeil �
 http://www.imc.org/imc-intl/ et http://www.imc.org/mail-i18n.html

 Parlons maintenant des clients mail  individuels (ou "mail user
 agents") :


 44..44..11..  ppiinnee

 La situation pour une version non patch�e  de pine 4.10 est la
 suivante.

 Pine ne fait pas de conversion de jeu de caract�res. Mais il vous
 permet de voir des courriers UTF-8 dans une fen�tre texte UTF-8
 (console Linux ou xterm).

 Normalement, Pine se plaindra du fait qu'il y a diff�rents jeux de
 caract�res � chaque fois que vous visualiserez un courrier encod� en
 UTF-8. Pour vous d�barrasser de cet avertissement, choisissez S
 (setup), puis C (config), et changez la valeur de "character set" �
 UTF-8.  Cette option ne fera rien � part r�duire le nombre
 d'avertissements, puisque Pine ne conna�t pas UTF-8 en interne.

 Notez aussi que pour Pine la notion de caract�res Unicode est tr�s
 limit�e : il affichera les caract�res latins et grecs, mais ce sont
 les seuls types de caract�res Unicode qu'il conna�t.

 Un patch de Robert Brady
 http://www.ents.susu.soton.ac.uk/~robert/pine-utf8-0.1.diff ajoute �
 Pine un support UTF-8. Avec ce patch, il peut d�coder et afficher les
 ent�tes et le corps des messages correctement.  Ce patch n�cessite
 GNOME libunicode http://cvs.gnome.org/lxr/source/libunicode/.


 44..44..22..  KKmmaaiill

 Kmail (comme tout KDE 1.0) ne contient absolument aucun support pour
 les mails en UTF-8.


 44..44..33..  NNeettssccaappee CCoommmmuunniiccaattoorr

 Le Messenger de Netscape Communicator peut envoyer et afficher des
 mails encod�s en UTF-8, mais cela n�cessite quelques interventions
 manuelles de l'utilisateur.

 Pour envoyer un mail encod� en UTF-8 : apr�s avoir ouvert la fen�tre
 "Compose", mais avant de commencer � composer le message, s�lectionnez
 dans le menu "View -> Character Set ->Unicode (UTF-8)" puis composez
 votre message et envoyez le.

 Quand vous recevez un courrier encod� en UTF-8, Netscape ne l'affiche
 malheureusement pas en UTF-8 directement, et ne donne m�me pas un
 indice visuel montrant que le courrier a �t� encod� en UTF-8. Vous
 devez s�lectionner manuellement l'option ad�quate dans "View ->
 Character Set -> Unicode (UTF-8)".  Pour afficher les courriers UTF-8,
 Netscape utilise des fontes diff�renci�es.  Vous pouvez ajuster la
 fonte utilis�e dans la bo�te de dialogue "Edit -> Preferences ->
 Fonts". Choisissez la cat�gorie de fontes "Unicode".


 44..44..44..  EEmmaaccss ((rrmmaaiill,, vvmm))



 44..55..  AAuuttrreess aapppplliiccaattiioonnss eenn mmooddee tteexxttee



 44..55..11..  lleessss

 Tel�chargez ftp://ftp.gnu.org/pub/gnu/less/less-340.tar.gz et
 appliquez le patch less-340-utf-2.diff de Robert Brady
 <[email protected]>.  Puis positionnez la variable
 d'environnement  LESSCHARSET :


      export LESSCHARSET=utf-8




 Si vous avez positionn� une variable d'environnement LESSKEY, v�rifiez
 aussi que le fichier vers lequel elle pointe ne d�finit pas LESS�
 CHARSET.  Si n�cessaire, r�g�n�rez  ce fichier en utilisant la com�
 mande


 44..55..22..  eexxppaanndd,, wwcc

 Procurez vous GNU textutils-2.0 et appliquez le patch
 textutils-2.0.diff, puis lancez configure.
 Ajoutez "#define HAVE_MBRTOWC 1", "#define HAVE_FPUTWC 1" � config.h.
 Dans src/Makefile, modifiez CFLAGS et LDFLAGS pour qu'ils incluent les
 r�pertoires o� libutf8 est install�, puis recompilez.


 44..55..33..  ccooll,, ccoollccrrtt,, ccoollrrmm,, ccoolluummnn,, rreevv,, uull

 Procurez vous le package util-linux-2.9y, configurez le, puis
 d�finissez ENABLE_WIDECHAR dans defines.h , changez le "# if 0" en "#
 if 1" dans lib/widechar.h. dans text-utils/Makefile, modifiez CFLAGS
 et LDFLAGS pour qu'ils incluent les r�pertoires o� libutf8 est
 install�. Puis recompilez.


 44..55..44..  ffiigglleett

 Figlet 2.2 a une option pour g�rer l'entr�e en UTF-8 : "figlet -C
 utf-8".


 44..55..55..  kkeerrmmiitt

 Le programme de communication s�rie C-Kermit
 http://www.columbia.edu/kermit/, dans les versions 7.0beta10 et
 sup�rieures, comprend les encodages de fichier et de transfert UTF-8
 et UCS-2, et l'encodage de terminal UTF-8.  La documentation de ces
 caract�ristiques peut �tre trouv�e �
 ftp://kermit.columbia.edu/kermit/test/text/ckermit2.txt


 44..66..  AAuuttrreess aapppplliiccaattiioonnss XX1111

 La Xlib de X11 ne peut malheureusement pas encore localiser UTF-8,
 cela devrait �tre travaill� prochainement.


 55..  CCoommmmeenntt ffaaiirree ppoouurr qquuee vvooss pprrooggrraammmmeess ccoommpprreennnneenntt UUnniiccooddee



 55..11..  CC//CC++++

 Le type C 'char' est 8-bits et restera 8-bits parce qu'il d�signe la
 plus petite unit� de donn�es adressable. Divers am�nagements sont
 disponibles :



 55..11..11..  PPoouurr llee ttrraaiitteemmeenntt ddee tteexxttee nnoorrmmaall


 Le standard ISO/ANSI C contient, dans une correction qui fut ajout�e
 en 1995, un type de caract�re cod� sur 16 bits `wchar_t', un ensemble
 de fonctions comme celles contenues dans <string.h> et  <ctype.h>
 (d�clar�es respectivement dans <wchar.h> et <wctype.h>), et un
 ensemble de fonctions de conversion entre  `char *' et `wchar_t *'
 (d�clar�es dans <stdlib.h>).

 Voici de bonnes r�ferences pour cette interface de programmation :


 �  Le manuel de GNU libc-2.1, chapitres 4 "Characters Handling" et 6
    "Character Set Handling"

 �  Les pages de manuel man-mbswcs.tar.gz

 �  La r�f�rence de la biblioth�que C Dinkumware
    http://www.dinkumware.com/htm_cl/

 �  La sp�cification Single Unix d'OpenGroup http://www.UNIX-
    systems.org/online.html

 Avantages de cette interface de programmation :

 �  C'est un standard non propri�taire.

 �  Ces fonctions font ce qu'il faut, selon les locales de
    l'utilisateur. Tout ce qu'un programme doit faire est d'appeler
    setlocale(LC_ALL,"");.

 Inconv�nients de cette interface de programmation :

 �  Certaines de ces fonctions ne sont pas "multithread-safe" parce
    qu'elles conservent un �tat interne cach� entre les appels de
    fonction.

 �  Il n'y a pas de type de donn�e de premi�re classe. Par cons�quent
    cette API ne peut pas �tre utilis�e raisonnablement pour tout ce
    qui n�cessite plus d'une locale ou d'un jeu de caract�res au m�me
    moment.

 �  La plupart des syst�mes d'exploitation ont un  mauvais support de
    cette interface de programmation.


 55..11..11..11..  NNootteess ccoonncceerrnnaanntt llaa ppoorrttaabbiilliitt��

 Une variable `wchar_t' peut �tre encod�e en Unicode ou non.  Ceci
 d�pend de la plateforme et quelquefois aussi des locales.  Une
 s�quence multi-octets `wchar_t' peut �tre encod�e en UTF-8 ou non
 selon la plateforme, et parfois selon les locales.

 En d�tails, voici ce que la Single Unix specification
 <http://www.UNIX-systems.org/online.html> dit � propos du type
 `wchar_t' :

 _T_o_u_s _l_e_s _c_o_d_e_s _d_e _c_a_r_a_c_t_�_r_e_s _1_6 _b_i_t_s _d_a_n_s _u_n _p_r_o_c_e_s_s_u_s _d_o_n_n_�
 _c_o_n_s_i_s_t_e_n_t _e_n _u_n _n_o_m_b_r_e _�_g_a_l _d_e _b_i_t_s_. _C_e_c_i _e_n _c_o_n_t_r_a_s_t_e _a_v_e_c _l_e_s
 _c_a_r_a_c_t_�_r_e_s_, _q_u_i _p_e_u_v_e_n_t _�_t_r_e _c_o_n_s_t_i_t_u_�_s _d_'_u_n _n_o_m_b_r_e _v_a_r_i_a_b_l_e _d_'_o_c_t_e_t_s_.
 _L_'_o_c_t_e_t _o_u _l_a _s_�_q_u_e_n_c_e _d_'_o_c_t_e_t_s _q_u_i _r_e_p_r_�_s_e_n_t_e_n_t _u_n _c_a_r_a_c_t_�_r_e _p_e_u_v_e_n_t
 _a_u_s_s_i _�_t_r_e _r_e_p_r_�_s_e_n_t_�_s _c_o_m_m_e _u_n _c_o_d_e _d_e _c_a_r_a_c_t_�_r_e _1_6 _b_i_t_s_.  _L_e_s _c_o_d_e_s
 _d_e _c_a_r_a_c_t_�_r_e_s _1_6 _b_i_t_s _f_o_u_r_n_i_s_s_e_n_t _d_o_n_c _u_n_e _t_a_i_l_l_e _u_n_i_f_o_r_m_e _p_o_u_r
 _m_a_n_i_p_u_l_e_r _l_e_s _d_o_n_n_�_e_s _t_e_x_t_u_e_l_l_e_s_. _U_n _c_o_d_e _d_e _c_a_r_a_c_t_�_r_e _1_6 _b_i_t_s _a_y_a_n_t
 _t_o_u_s _l_e_s _b_i_t_s _� _0 _e_s_t _u_n _c_o_d_e _d_e _c_a_r_a_c_t_�_r_e _1_6 _b_i_t_s _n_u_l _(_n_u_l_l_)_, _e_t
 _t_e_r_m_i_n_e _u_n_e _c_h_a_�_n_e_. _L_a _v_a_l_e_u_r _d_e_s _c_a_r_a_c_t_�_r_e_s _l_a_r_g_e_s _p_o_u_r _c_h_a_q_u_e _m_e_m_b_r_e
 _d_u _"_P_o_r_t_a_b_l_e _C_h_a_r_a_c_t_e_r _S_e_t_" (i.e ASCII)  _e_s_t _�_g_a_l_e _q_u_a_n_d _i_l _e_s_t
 _u_t_i_l_i_s_� _e_n _t_a_n_t _q_u_e _s_e_u_l _c_a_r_a_c_t_�_r_e _d_a_n_s _u_n _c_a_r_a_c_t_�_r_e _e_n_t_i_e_r _(_i_n_t_e_g_e_r_)
 _c_o_n_s_t_a_n_t_. _L_e_s _c_o_d_e_s _d_e _c_a_r_a_c_t_�_r_e_s _1_6 _b_i_t_s _p_o_u_r _l_e_s _a_u_t_r_e_s _c_a_r_a_c_t_�_r_e_s
 _d_�_p_e_n_d_e_n_t _d_e_s _l_o_c_a_l_e_s _e_t _d_e _l_'_i_m_p_l_�_m_e_n_t_a_t_i_o_n_.  _L_e_s _o_c_t_e_t_s
 _m_o_d_i_f_i_c_a_t_e_u_r_s _d_'_�_t_a_t _n_'_o_n_t _p_a_s _d_e _r_e_p_r_�_s_e_n_t_a_t_i_o_n _e_n _c_o_d_e _d_e _c_a_r_a_c_t_�_r_e
 _1_6 _b_i_t_s_.

 Une cons�quence notable est que dans des programmes portables vous ne
 devriez pas utiliser des caract�res non-ASCII dans des cha�nes
 litt�rales.  Cela signifie que m�me si vous savez que les doubles
 guillemets ont les codes U+201C et U+201D, vous ne devriez pas �crire
 une cha�ne litt�rale L"\u201cBonjour\u201d, dit il" ou
 "\xe2\x80\x9cBonjour\xe2\x80\x9d, dit il" dans des programmes C.
 Utilisez plut�t GNU gettext comme cela :  gettext ("'Bonjour', dit
 il"), et cr�ez une base de donn�es de messages en.UTF-8.po qui traduit
 "'Bonjour' dit il" en "\u201cBonjour\u201d, dit il".

 Voici une �tude de la portabilit� des am�nagements ISO/ANSI C sur
 diverses impl�mentations d'Unix. La GNU glibc-2.2 les supportera tous,
 mais pour l'instant nous avons le tableau suivant.


    GGNNUU gglliibbcc--22..00..xx,, gglliibbcc--22..11..xx

    �  <wchar.h> et  <wctype.h> existent.

    �  Poss�de les fonctions wcs/mbs, mais pas fgetwc/fputwc/wprintf.

    �  Pas de locales UTF-8.

    �  mbrtowc retourne EILSEQ pour les octets >= 0x80.

    SSoollaarriiss 22..77

    �  <wchar.h> et <wctype.h> existent.

    �  Poss�de toutes les fonctions wcs/mbs, fgetwc/fputwc/wprintf.

    �  Supporte les locales UTF-8 suivantes : en_US.UTF-8, de.UTF-8,
       es.UTF-8, fr.UTF-8, it.UTF-8, sv.UTF-8.


    �  mbrtowc retourne EILSEQ pour les octets >= 0x80.

    OOSSFF//11 44..00dd

    �  <wchar.h> et <wctype.h> existent.

    �  Poss�de toutes les fonctions wcs/mbs, fgetwc/fputwc/wprintf.

    �  A en plus universal.utf8@ucs4 locale, voir "man 5 unicode".

    �  mbrtowc ne conna�t pas UTF-8.

    IIrriixx 66..55

    �  <wchar.h> et <wctype.h> existent.

    �  Poss�de les fonctions wcs/mbs  et fgetwc/fputwc, mais pas
       wprintf.

    �  N'a pas de locales multi-octets.

    �  A seulement un simulacre de d�finition pour  mbstate_t.

    �  N'a pas mbrtowc.

    HHPP--UUXX 1111..0000

    �  <wchar.h> existe, mais pas <wctype.h>.

    �  Poss�de les fonctions wcs/mbs  et fgetwc/fputwc, mais pas
       wprintf.

    �  A une locale C.utf8.

    �  N'a pas mbstate_t.

    �  N'a pas mbrtowc.

    AAIIXX 44..22

    �  <wchar.h> existe, mais pas <wctype.h> - utilisez � la place
       <ctype.h> et <wchar.h>.

    �  Poss�de les fonctions wcs/mbs  et fgetwc/fputwc, mais pas
       wprintf.

    �  Poss�de les locales UTF-8 suivantes : ET_EE.UTF-8, LT_LT.UTF-8,
       LV_LV.UTF-8, ZH_CN.UTF-8.

    �  N'a pas mbstate_t.

    �  N'a pas mbrtowc.

 Par cons�quent je recommande l'utilisation des fonctions red�marrables
 et multithread-safe wcsr/mbsr. Oubliez les syst�mes qui ne les ont pas
 (Irix, HP-UX, Aix), et utilisez le plug-in qui permet d'utiliser des
 locales UTF-8, libutf8_plug.so (voir ci dessous) sur les syst�mes qui
 vous permettent de compiler des programmes qui utilisent ces fonctions
 wcrs/mbsr (Linux, Solaris, OSF/1).

 Un avis similaire, donn� par Sun dans
 http://www.sun.com/software/white-papers/wp-unicode/, section
 "Internationalized Applications with Unicode", est :

 _P_o_u_r _i_n_t_e_r_n_a_t_i_o_n_a_l_i_s_e_r _c_o_r_r_e_c_t_e_m_e_n_t _u_n_e _a_p_p_l_i_c_a_t_i_o_n _u_t_i_l_i_s_e_z _l_e_s
 _i_n_d_i_c_a_t_i_o_n_s _s_u_i_v_a_n_t_e_s _:
 1. _�_v_i_t_e_z _l_'_a_c_c_�_s _d_i_r_e_c_t _� _U_n_i_c_o_d_e_. _C_e_c_i _e_s_t _l_a _t_�_c_h_e _d_e _l_a _c_o_u_c_h_e
    _d_'_i_n_t_e_r_n_a_t_i_o_n_a_l_i_s_a_t_i_o_n _d_e _l_a _p_l_a_t_e_f_o_r_m_e_.

 2. _U_t_i_l_i_s_e_z _l_e _m_o_d_�_l_e_s _P_O_S_I_X _p_o_u_r _l_e_s _i_n_t_e_r_f_a_c_e_s _m_u_l_t_i_-_o_c_t_e_t_s _e_t _�
    _c_a_r_a_c_t_�_r_e_s _1_6 _b_i_t_s_.

 3. _A_p_p_e_l_e_z _s_e_u_l_e_m_e_n_t _l_e_s _f_o_n_c_t_i_o_n_s _d_e _l_'_A_P_I _q_u_e _l_a _c_o_u_c_h_e
    _d_'_i_n_t_e_r_n_a_t_i_o_n_a_l_i_s_a_t_i_o_n _f_o_u_r_n_i_t _p_o_u_r _l_a _l_a_n_g_u_e _e_t _l_e_s _o_p_�_r_a_t_i_o_n
    _s_p_�_c_i_f_i_q_u_e_s _� _l_a _c_u_l_t_u_r_e_.

 4. _R_e_s_t_e_z _i_n_d_�_p_e_n_d_a_n_t _d_e _l_'_e_n_c_o_d_a_g_e_.

 Si, pour une raison quelconque, vous devez vraiment supposer que
 voulez faire un traitement sp�cial de certains caract�res Unicode),
 vous devriez rendre ce bout de code conditionnel selon le r�sultat de
 is_locale_utf88(). Autrement vous allez mettre la pagaille dans le
 comportement de votre programme sur d'autres plateformes, ou si
 d'autres locales sont utilis�es.  La fonction is_locale_utf8() est
 d�clar�e dans utf8locale.h et d�finie dans utf8locale.c.


 55..11..11..22..  LLaa bbiibblliiootthh��qquuee lliibbuuttff88

 Une impl�mentation portable de l'API ISO/ANSI C, qui supporte les
 locales 8-bits et les locales UTF-8, peut �tre trouv�e dans
 libutf8-0.5.2.tar.gz

 Avantages :


 �  D�s maintenant un support pour Unicode UTF-8 portable, m�me sur les
    syst�mes d'exploitation dont le support des caract�res multi-octets
    ne marche pas, ou qui n'ont pas du tout de support pour les
    caract�res multi-octets/larges.

 �  Le m�me binaire marche pour toutes les locales 8-bit et les locales
    UTF-8 support�es par le syst�me.

 �  Quand un syst�me d'exploitation fournit un vrai support pour les
    caract�res multi-octets, vous pouvez en tirer avantage simplement
    en recompilant sans l'option du compilateur -DHAVE_LIBUTF8.


 55..11..11..33..  LLaa mm��tthhooddee PPllaann99

 Le syst�me d'exploitation Plan9, une variante d'Unix, utilise UTF-8
 comme encodage dans toutes ses applications. Son type de caract�re
 large est appel� 'Rune', pas 'wchar_'. Des parties ce ses
 biblioth�ques, �crites par  Rob Pike et Howard Trikey, sont
 disponibles �
 ftp://ftp.cdrom.com/pub/netlib/research/9libs/9libs-1.0.tar.gz.  Une
 autre biblioth�que similaire, �crite par Alistair G. Crook, est �
 ftp://ftp.cdrom.com/pub/NetBSD/packages/distfiles/libutf-2.10.tar.gz.
 En particulier, chacune de ces biblioth�ques contient un moteur
 d'expressions rationnelles qui comprend l'UTF-8.

 D�savantages de cette API :


 �  UTF-8 est compil�  dans la biblioth�que, pas optionnel. Les
    programmes compil�s dans cet univers  perdent le support des
    encodages 8-bits qui sont toujours utilis�s fr�quemment en Europe.




 55..11..22..  PPoouurr lleess iinntteerrffaacceess uuttiilliissaatteeuurr ggrraapphhiiqquueess

 La biblioth�que QT-2.0 http://www.troll.no/ contient la classe QString
 qui est totalement Unicode. Vous pouvez utiliser les fonctions membres
 QString::utf8 et QString::fromUtf8 pour convertir depuis/vers un texte
 encod� en UTF-8. Les fonctions membres QString::ascii et
 QString::latin1 ne devraient plus �tre utilis�es.


 55..11..33..  PPoouurr llaa mmaanniippuullaattiioonn ddee tteexxttee aavvaanncc��ee

 Les biblioth�ques mentionn�es pr�c�demment impl�mentent des versions
 des concepts ASCII qui comprennent Unicode. Voici des biblioth�ques
 qui traitent des concepts Unicode, comme titlecase (Une troisi�me
 casse de lettres, diff�rente des majuscules et des minuscules), la
 distinction entre la ponctuation et les symboles, la d�composition
 canonique, les classes combinables, le classement canonique et
 d'autres choses du m�me genre.


    uuccddaattaa--11..99
       La biblioth�que ucdata de Mark Leisher
       http://crl.nmsu.edu/~mleisher/ucdata.html s'occupe des
       propri�t�s des caract�res, de la conversion de la casse, de la
       d�composition, des classes combin�es.


    IICCUU
       Ce  sont les classes IBM pour Unicode.
       http://www.alphaworks.ibm.com/tech/icu/.  Une biblioth�que tr�s
       d�taill�e comprenant des cha�nes de caract�res Unicode, des
       paquets de ressources, des formateurs de nombres, de date,
       d'heure et de messages, des assemblages, des assembleurs de
       messages et plus encore.  Beaucoup de locales sont support�es.
       Cette biblioth�que est portable pour Unix et Win32, mais
       compilera sans intervention ("out of the box") seulement avec la
       libc6, pas la libc5.


    lliibbuunniiccooddee
       La librairie Unicode de GNOME
       http://cvs.gnome.org/lxr/source/libunicode/ de Tom Tromey entre
       autres. Elle couvre la conversion du jeu de caract�res, les
       propri�t�s des caract�res, la d�composition.


 55..11..44..  PPoouurr llaa ccoonnvveerrssiioonn

 Deux biblioth�ques de conversion qui supportent UTF-8 et un grand
 nombre de de jeux de caract�res 8-bits, sont disponibles :


 55..11..44..11..  LL''iimmppll��mmeennttaattiioonn iiccoonnvv dd''UUllrriicchh DDrreeppppeerr,, ccoonntteennuuee ddaannss llaa
 GGNNUU gglliibbcc--22..22..11


 ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.1.1.tar.gz.

 Avantages :


 �  iconv est conforme au standard POSIX, les programmes qui
    l'utilisent pour la conversion depuis/vers UTF-8 tourneront aussi
    sous Solaris. Cependant le nom des jeux de caract�res diff�re entre
    les plateformes. Par exemple, "EUC-JP" sous glibc devient "eucJP"
    sous HP-UX. (Le nom INIA officiel pour ce jeu de caract�res est
    "EUC-JP". Il s'agit donc clairement d'une d�ficience de HP-UX.)

 �  Aucune biblioth�que suppl�mentaire n'est n�cessaire.


 55..11..44..22..  lliibbrreeccooddee ppaarr FFrraann��ooiiss PPiinnaarrdd

 ftp://ftp.gnu.org/pub/gnu/recode/recode-3.5.tar.gz.

 Avantages :


 �  Support pour la translitt�ration, i.e conversion de caract�res non-
    ASCII en s�quences de caract�res ASCII de fa�on � pr�server la
    lisibilit� pour les humains, m�me lorsqu'une transformation sans
    pertes est impossible.

 Probl�mes :


 �  Cette API est non standard.


 55..11..55..  LLeess aauuttrree aapppprroocchheess


    lliibbuuttff--88
       libutf-8, de G.Adam.Stanislav <[email protected]> contient
       quelques fonctions pour la conversion depuis/vers des flux
       "FILE*".  http://www.whizkidtech.net/i18n/libutf-8-1.0.tar.gz
       Avantages :


    �  Tr�s petit.

       Probl�mes :


    �  API non standard ;

    �  UTF-8 est compil�  dans la biblioth�que, pas optionnel. Les
       programmes compil�s dans cet univers  perdent le support des
       encodages 8-bits qui sont toujours utilis�s fr�quemment en
       Europe ;

    �  L'installation n'est pas �vidente : le Makefile doit �tre
       modifi�. Pas d'auto-configuration.


 55..22..  JJaavvaa

 Java supporte Unicode en interne. Le type 'char' d�signe un  caract�re
 Unicode, et la classe 'java.lang.String' d�signe une cha�ne de
 caract�res construite � partir de caract�res Unicode.

 Java peut afficher n'importe quel caract�re � travers son syst�me de
 fen�trage AWT, � condition que


 1. vous positionniez la propri�t� syst�me "user.language" de fa�on
    appropri�e.

 2. Les d�finitions de jeux de fontes
    /usr/lib/java/lib/font.properties._l_a_n_g_u_a_g_e soient appropri�es, et


 3.  Le fontes sp�cifi�es dans ce fichier soient install�es.

    Par exemple, pour afficher du texte contenant des caract�res
    japonais, vous devriez installer des fontes japonaise, et lancer
    "java -Duser.language=ja ...". Vous pouvez combiner les jeux de
    fontes : pour pouvoir afficher des caract�res d'Europe de l'ouest,
    grecs et japonais simultan�ment, vous devriez cr�er une combinaison
    des fichiers "font.properties" (couvre ISO-8859-1),
    "font.properties.el" (couvre ISO-8859-7) et "font.properties.ja"
    dans un seul fichier.  ??Ceci n'a pas �t� test�??

 Les interfaces java.io.DataInput et java.io.DataOutput contiennent des
 m�thodes appel�es 'readUTF', et 'writeUTF' respectivement.  Mais notez
 qu'elles n'utilisent pas UTF-8 ; elles utilisent un encodage UTF-8
 modifi� : le caract�re NUL est encod� dans une s�quence de deux octets
 0xC0 et 0x80 � la place de 0x00, et un octet 0x00 est ajout� � la fin.
 Encod�es de cette fa�on, les cha�nes peuvent contenir des caract�res
 NUL mais elles doivent n�anmoins �tre pr�fix�es par un champ de
 taille.  Les fonctions C <string.h> comme strlen() et strcpy() peuvent
 �tre utilis�es pour les manipuler.


 55..33..  LLiisspp

 Le standard Lisp ordinaire d�termine deux types de caract�res :
 support Unicode ou non. Ce langage d�termine aussi un mot-clef
 argument ':external-format' pour 'open' comme place naturelle pour
 sp�cifier un jeu de caract�res ou un encodage.

 Parmi les impl�mentation gratuites du lisp standard, seul CLISP
 http://clisp.cons.org/ supporte Unicode. Vous aurez besoin d'une
 version de CLISP datant de juillet 99 ou plus r�cente.
 ftp://clisp.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz Les types
 "base-char" et "character" sont tous �quivalents au 16-bits Unicode.
 L'encodage utilis� pour le fichier ou l'I/O socket/pipe peut �tre
 sp�cifi� par l'argument ':external-format'.  Les encodages utilis�s
 pour les op�rations d'entr�e/sortie sur des ttys et l'encodage par
 d�faut pour les I/O file/socket d�pendent des locales.

 Parmi les impl�mentations commerciales du Lisp standard, seule Eclipse
 http://www.elwood.com/eclipse/eclipse.htm supporte Unicode. Voir
 http://www.elwood.com/eclipse/char.htm Le type 'base-char' est
 �quivalent � ISO-8859-1, et le type L'encodage utilis� pour les
 entr�es/sorties sur un fichier peut �tre d�fini � travers une
 combinaison des arguments de 'open'
 Limitations : les fonctions d'attributs de caract�res sont d�pendantes
 des locales. Les sources et les fichiers de sources compil�s ne
 peuvent pas contenir des cha�nes Unicode litt�rales.  L'impl�mentation
 commerciale du Lisp standard Allegro CL ne contient pas encore de
 support Unicode, mais Erik Naggum y travaille.


 55..44..  AAddaa9955

 Ada95 a �t� con�u pour supporter Unicode, et la biblioth�que standard
 Ada95 contient les types de donn�es sp�ciaux ISO 10646-1
 Wide_Character et Wide_String, ainsi que de nombreuses proc�dures et
 fonctions associ�es.  Le compilateur Ada95 GNU (gnat-3.11 ou plus)
 supporte UTF-8 comme encodage externe des caract�res 16 bits. Cela
 vous autorise � utiliser UTF-8 � la fois dans le code source et dans
 les entr�es/sorties de l'application. Pour l'activer dans
 l'application, utilisez "WCEM=8" dans la cha�ne FORM quand vous ouvrez
 un fichier, et utilisez l'option du compilateur "-gnatW8" si le code
 source est UTF-8. Pour plus de d�tails, voyez les manuels de r�f�rence
 GNAT et Ada95.