UTF-8/fr

UTF-8 est un encodage des caractères de longueur variable qui, dans ce cas, signifie qu'il utilise 1 à 4 octets par symbole. Le premier octet sert à encoder les caractères ASCII, donnant ainsi au jeu de caractères une totale compatibilité avec ASCII. UTF-8 signifie que les caractères ASCII et latins sont interchangeables moyennant un petit accroissement de la taille des données, parce que seul le premier chiffre binaire est utilisé. Les utilisateurs d'alphabets de l'est asiatique, comme les japonais, à qui ont a attribué une plage plus élevée d'octets sont insatisfaits, car cela conduit à plus de 50% de redondance dans leurs données.

Qu'est-ce que l'encodage des caractères ?
Les ordinateurs ne comprennent pas les textes eux-mêmes. Au lieu de cela, chaque caractère est représenté par un nombre. Traditionnellement, chaque jeu de nombres utilisé pour représenter les alphabets et les caractères (connu sous le nom de système de codage, encodage ou jeu de caractères) était limité en taille à cause de la limitation même du matériel constituant les ordinateurs.

L'histoire de l'encodage des caractères
Le plus courant (ou du moins le plus largement accepté) des jeux de caractères est l'ASCII (American Standard Code for Information Interchange). Il est largement reconnu que l'ASCII est la norme logicielle qui a connu le plus grand succès de tous les temps. L'ASCII moderne a été normalisé en 1986 (ANSI X3.4, RFC 20, ISO/IEC 646:1991, ECMA-6) par l'American National Standards Institute.

ASCII, a strictement parler, est encodé sur 7 chiffres binaires, ce qui signifie qu'il utilise des motifs de chiffres représentables avec 7 chiffres binaires. Ce qui correspond à la plage 0 à 127 en décimal. Ceci inclut 32 caractères de contrôle non visualisables, en majorité entre 0 et 31, auxquels s'ajoute le caractère de contrôle final, DEL ou delete, dont la représentation est 127. Tous les caractères entre 32 et 126 inclus, sont visualisables : l'espace, les marques de ponctuation, les lettres latines et les chiffres.

Le huitième bit en ASCII était à l'origine utilisé comme bit de parité pour la détection d'erreurs. Si cela n'est pas souhaité, on peut le laisser à 0. Ceci signifie que, avec l'ASCII, chaque caractère est représenté par un seul octet.

Bien que l'ASCII soit suffisant pour communiquer en anglais moderne, dans d'autres langues européens qui comprennent des caractères accentués, les choses ne sont pas aussi simples. Les normes ISO 8859 ont été développées pour satisfaire ces besoins. Elles sont rétro-compatibles avec l'ASCII, mais au lieu de laisser le huitième chiffre binaire à 0, elles l'utilisent pour former un autre ensemble de 127 caractères dans chacun des encodages. Les limitations des normes ISO 8859 sont apparues très vite, et il y a aujourd'hui 15 variantes de la norme ISO 8859 (8859-1 à 8859-15). En dehors de la plage compatible avec l'ASCII, il y a souvent des conflits entre les lettres représentées par chacun des octets. Pour compliquer encore l'interopérabilité entre versions, Windows-1252 est utilisée à leur place dans certaines versions de Microsoft Windows pour les langues européennes. Il s'agit d'un jeu étendu de ISO-8859-1, cependant il en différe de plusieurs façons. Tous ces jeux restent néanmoins compatibles avec ASCII.

Le développement nécessaire d'encodage mono-octet pour des alphabets non latins, tels que EUC (Extended Unix Coding) qui est utilisé pour le Japonais et le Coréen (et dans une moindre mesure pour le Chinois) a créé encore plus de confusion, tandis que d'autres systèmes d'exploitation utilisaient des jeux de caractères différents pour les mêmes langues, par exemple, Shift-JIS et ISO-2022-JP. Les utilisateurs désireux d'afficher des glyphes cyrilliques avaient à choisir entre KOI8-R pour le Russe et le Bulgare ou KOI8-U pour l'Ukrainien, aussi bien que parmi les autres encodages cyrilliques comme le peu prisé ISO 8859-5 et le plus connu Windows-1251. Tous ces jeux de caractères rompaient la compatibilité avec ASCII (quoi que le jeu KOI8 place les caractères cyrilliques dans l'ordre latin, de manière telle que si le huitième chiffre binaire est retiré, le texte est déchiffrable sur un terminal ASCII via une translittération à casse inversée.)

Ceci a conduit à la confusion, et aussi à une presque totale incapacité à communiquer dans plusieurs langues, en particulier à travers des alphabets différents. C'est là qu' Unicode entre en scène.

Qu'est-ce qu'Unicode ?
La norme Unicode jette aux orties la limite traditionnelle d'un octet pour les jeux de caractères. Elle utilise 17 plans de 65.536 points de code pour décrire un maximum de 1.114.112 caractères. Comme le premier plan, aussi connu sous le nom de Basic Multilingual Plane (Plan Multilingue de Base) ou BMP, contient presque tout ce dont vous aurez jamais besoin, beaucoup ont fait la supposition fausse que l'Unicode était un jeu de caractères encodé sur 16 chiffres binaires.

Unicode a été cartographié de différentes manières, mais les deux plus courantes sont UTF (Unicode Transformation Format pour Format de transformation d'Unicode) et UCS (Universal Character Set pour Jeu de caractères universel). Le nombre après UTF indique le nombre de chiffres binaires dans chacun des éléments, tandis que le nombre après UCS indique le nombre d'octets. UTF-8 est devenu le moyen le plus répandu pour l'échange de text Unicode en raison de sa nature 8 chiffres binaires pure, et fait l'objet de ce document.

Que peut faire UTF-8 pour vous ?
UTF-8 vous permet de travailler dans un environnement multilingue conforme aux normes et reconnu internationalement, avec une redondance des données comparativement faible. UTF-8 est le moyen privilégié pour transmettre les caractères non ASCII sur Internet, via des courriels, l'IRC ou presque n'importe quel autre médium. En dépit de cela, beaucoup de gens considèrent la communication en ligne en UTF-8 comme abusive. Il est toujours bon d'être conscient de cela sur certains canaux, listes de diffusion ou groupes Usenet avant d'employer des caractères non ASCII en UTF-8.

Trouver ou créer des locales UTF-8
Maintenant que vous comprenez les principes d'Unicode, vous êtes prêt à utiliser UTF-8 sur votre système.

Le prérequis pour UTF-8 est d'avoir une version de glibc installée qui assure la prise en charge de la langue nationale. Le moyen recommandé pour réaliser cela, est le fichier. C'est cependant au-delà du champ de ce document d'expliquer l'utilisation de ce fichier. Ceci est expliqué dans le Gentoo Localization Guide.

Ensuite, vous devez décider si une locale UTF-8 est déjà disponible pour votre langue, ou si vous devez en créer une.

De la sortie de cette commande, vous devez prendre le résultat avec un suffixe similaire à. Si vous ne trouvez aucun résultat avec un suffixe similaire à , vous devez créez une locale UTF-8 compatible.

Remplacez "en_GB" avec le code de locale que vous souhaitez :

Une autre façon d'inclure une locale UTF-8 est de l'ajouter au fichier et de générer les locales nécessaire avec la commande.

Line in /etc/locale.gen

Définir la Locale
Il y a une variable d'environnement qui doit être définie de manière à ce que le système utilise vos nouvelles locales UTF-8 :  (ou, en option, , si vous désirez changer aussi la langue). Il y a aussi différentes manières de la définir ; certains préfèrent avoir un environnement UTF-8 pour un utilisateur donné, auquel cas il la définissent dans leur fichier  (s'ils utilisent   ),  ou  (s'ils utilisent   ). Une information complémentaire et de bonnes pratiques sont disponibles dans notre Localization Guide.

D'autres préfèrent la définir globalement. Une circonstance particulière où nous recommandons fortement de procéder de cette manière, c'est quand est utilisé, parce que ce script d'initialisation lance le gestionnaire d'écran et le bureau avant qu'aucun des scripts de démarrage mentionnés précédemment ne soit sourcé, et en conséquence, avant qu'aucune des variables ne soit dans l'environnement.

Définir la locale globalement devrait être fait en utilisant. Ce fichier devrait ressembler à quelque chose comme ce qui suit :

Demonstration /etc/env.d/02locale

Ensuite l'environnement doit être mis à jour pour prendre en compte les changements.

Maintenant, exécutez la commande   sans argument pour voir si vous disposez des variables correctes dans votre environnement.

C'est tout. Vous utilisez désormais les locales UTF-8, et le prochain obstacle à franchir, c'est la configuration des applications que vous utilisez quotidiennement.

Prise en charge par les applications
Lorsque Unicode commença à prendre son essor dans le monde du logiciel, les jeux de caractères multi-octets n'étaient pas très adaptés à des langages de programmation tels que le langage C, langage dans lequel beaucoup des programmes utilisés quotidiennement sont écrits. Même encore aujourd'hui, certains programmes ne sont pas capable de prendre en charge l'UTF-8 correctement. Fort heureusement, la plupart le sont !

Noms de fichiers, NTFS, et FAT
Il y a plusieurs options NLS (Native Language Support) dans le menu de configuration du noyau Linux, mais il est important d'éviter la confusion ! Pour la majeure partie, la seule chose que vous avez à faire est de compiler la prise en charge de UTF-8 NLS dans votre noyau, et de changer l'option par défaut de NLS en utf8.

Si vous envisagez de monter des partitions NTFS, vous avez besoin de spécifier une option  pour la commande mount. Si vous envisagez de monter des partitions FAT, vous devez spécifier une option   pour la commande mount. En option, vous pouvez aussi définir une page de code (codepage) par défaut pour FAT dans la configuration du noyau. Notez que l'option   pour mount écrasera les réglages faits dans la configuration du noyau.

Vous devriez éviter de définir le  (jeu de caractères par défaut pour fat) à UTF-8, car ce n'est pas recommandé. Au lieu de cela, vous pouvez passer l'option utf8=true au moment de monter votre partition FAT. Pour une information plus complète, reportez-vous à la page  et à la documentation du noyau à.

Pour changer l'encodage des noms de fichier, vous pouvez utiliser.

Le format de la commande   est le suivant :

Remplacez iso-8859 par le jeu de caractères à partir duquel vous effectuez la conversion :

Pour changer le contenu de fichiers, utilisez l'utilitaire, fournit avec. Remplacez muitute iso-8859-1 par le jeu de caractères à partir duquel vous effectuez la conversion, et vérifiez que la sortie est saine :

Pour convertir un fichier vous devez en créer un autre :

peut aussi être utilisé à cet effet.

La console système
Pour valider UTF-8 à la console, vous devriez éditer  et définir  , et lire aussi les commentaires de ce fichier--il est important d'avoir une police de caractères qui dispose d'une bonne plage de caractères si vous envisagez d'utiliser Unicode largement. Pour que cela fonctionne, assurez-vous d'avoir créé la locale Unicode correctement.

La variable  variable, définie dans , devrait spécifier une carte de clavier Unicode.

Example /etc/conf.d/keymaps snippet

Ncurses et Slang
Il est sage d'ajouter  aux options globales de votre variable USE dans le fichier, et de réinstaller   et   si c'est approprié. Portage le fera automatiquement si vous mettez votre système à jour :

Il vous faut également recompiler les paquets qui possèdent un lien vers ceux-là, maintenant que les changements de la variable USE ont été appliqués. L'outil à utiliser  fait partie du paquet.

KDE, GNOME et Xfce
Tous les environnements de bureau majeurs prennent totalement en charge l'Unicode, et ne nécessitent pas d'autres étapes de configuration que celles décrites dans ce guide. Ceci est dû au fait que les boîtes à outils graphiques sous-jacentes (Qt ou GTK+2) sont prédisposées UTF-8 et que, par conséquent, les applications qui s'appuient sur ces boîtes à outils le sont également dès l'installation.

Les exceptions à cette règle surviennent avec Xlib et GTK+1. GTK+1 requiert une spécification de police de caractères iso-10646-1 dans ~/.gtkrc, par exemple,. C'est pourquoi, les applications utilisant Xlib ou Xaw doivent recevoir une spécification de police de caractères similaire ; autrement elles ne fonctionnent pas.

Example ~/.gtkrc (for GTK+1) that defines a Unicode compatible font

Dans les applications qui prennent en charge les interfaces graphiques Qt et GTK+2, l'interface GTK+2 donnera en général de meilleurs résultats avec Unicode.

X11 et polices de caractères
Les polices de caractères TrueType prennent en charge l'Unicode, et la plupart des polices qui arrivent avec Xorg disposent d'une impressionnante prise en charge, bien qu'évidemment, toutes les glyphes particulières accessibles par Unicode n'aient été créées pour ces polices. Pour compiler les polices (y compris le jeu Bitstrean Vera) avec la prise en charge des caractères est-asiatique dans X, assurez-vous que l'option   de la variable USE est définie. Beaucoup d'autres applications utilisent cette option, c'est pourquoi, il est judicieux de l'ajouter aux options permanentes de la variable USE.

Il y a aussi plusieurs paquets de polices de caractères dans Portage qui sont prédisposées Unicode.

Gestionnaires de fenêtres et émulateurs de terminal
Les gestionnaires de fenêtres qui ne sont pas construits sur GTK ou Qt n'ont généralement pas une très bonne prise en charge de l'Unicode, car ils utilisent souvent la bibliothèque Xft pour les polices. Si votre gestionnaire de fenêtres n'utilise pas les polices Xft, vous pouvez utiliser la spécification de police de caractères mentionnée dans les sections précédentes en tant que police Unicode.

Les émulateurs de terminal qui utilisent Xft et prennent en charge l'Unicode sont difficiles à mettre en place. En plus de Konsole et du terminal-gnome, les meilleures options dans Portage sont   ,   ,   ,   , ou plain   quand il est compilé avec l'option   de la variable USE  et invoqué comme. prend en charge l'UTF-8 également, lorqu'il est invoqué comme   ou lorsque ce qui suit est placé dans le fichier  :

~/.screenrc for UTF-8

Vim, Emacs, Xemacs et Nano
Vim fournit une prise en charge totale de l'UTF-8, et dispose d'une détection des fichiers UTF-8 en interne. Pour une information plus complète sur Vim, utilisez.

La version 23 d'Emacs et la version 21.5 de Xemacs prennent totalement en charge l'UTF-8. La version 24 d'Emacs 24 prend également en charge l'édition de texte bidirectionnelle.

Nano fournit une prise en charge totale de l'UTF-8 depuis la version 1.3.6.

Shells
Ordinairement,   assure une prise en charge totale de l'UTF-8 via la bibliothèque GNU readline. Z shell fournit une prise en charge du l'Unicode avec l'option   de la variable USE.

Le shell C,  et   ne fournissent aucune prise en charge de l'UTF-8.

Irssi
Irssi dispose d'une prise en charge totale de l'UTF-8, bien que cela nécessite la définition d'une option par l'utilisateur.

Pour les canaux dans lesquels des caractères non-ASCII sont souvent échangés dans des jeux de caractères non-UTF-8, la commande  peut être utilisée pour convertir les caractères. Tapez  pour plus d'informations.

Mutt
L'agent utilisateur de courriel Mutt dispose d'une très bonne prise en charge de l'UTF-8, vous n'avez rien à mettre dans vos fichiers de configuration. Mutt travaille dans un environnement unicode sans modification si tous vos fichiers de configuration (y compris la signature) sont encodés UTF-8.

Une information complémentaire est disponible sur Mutt Wiki.

Man
Les page man sont une partie intégrante de toute machine Linux. Pour vérifier que tout texte unicode dans vos pages est rendu correctement, éditez le fichier et remplacer une ligne comme indiqué ci-dessous :

man.conf changes for Unicode support

elinks et links
Il s'agit ici de navigateur textuels, et nous allons voir comment activer la prise en charge de l'UTF-8 pour eux. Pour  et , il y deux façons d'y parvenir, une en utilisant une option de configuration interne au navigateur, l'autre en éditant un fichier de configuration. Pour positionner l'option interne du navigateur, ouvrez un page Web avec  ou , puis, faites   au clavier pour entrer dans le menu de configuration. Sélectionnez alors la dernière option   en pressant Entrée. Sauvegardez et quittez le menu. Sur   vous pouvez avoir à faire à nouveau   et à appuyer sur la touche   pour sauvegarder. Le fichier de configuration est présenté ci-dessous :

Enabling UTF-8 for elinks/links

-

Samba
Samba est une suite logicielle qui met en œuvre le protocole SMB (Server Message Block) pour les systèmes UNIX tels que les Macs, Linux et FreeBSD. Le protocole est aussi parfois appelé le Common Internet File System (CIFS). Samba inclut aussi le système NetBIOS - utilisé pour le partage de fichiers à travers des réseaux windows.

Ajoutez ce qui suit sous la section [global] :

Testing it all out
There are numerous UTF-8 test websites around. , ,   ,   and all Mozilla based browsers (including Firefox) support UTF-8. Konqueror and Opera have full UTF-8 support too.

When using one of the text-only web browsers, make absolutely sure you are using a Unicode-aware terminal.

If you see certain characters displayed as boxes with letters or numbers inside, this means that your font does not have a character for the symbol or glyph that the UTF-8 wants. Instead, it displays a box with the hex code of the UTF-8 symbol.


 * A W3C UTF-8 Test Page
 * A UTF-8 test page provided by the University of Frankfurt

Input Methods
Dead keys may be used to input characters in X that are not included on your keyboard. These work by pressing your right Alt key (or in some countries, AltGr) and an optional key from the non-alphabetical section of the keyboard to the left of the return key at once, releasing them, and then pressing a letter. The dead key should modify it. Input can be further modified by using the Shift key at the same time as pressing the AltGr and modifier.

To enable dead keys in X, you need a layout that supports it. Most European layouts already have dead keys with the default variant. However, this is not true of North American layouts. Although there is a degree of inconsistency between layouts, the easiest solution seems to be to use a layout in the form "en_US" rather than "us", for example. The layout is set in like so:

/etc/X11/xorg.conf snippet

This change will come into effect when your X server is restarted. To apply the change now, use the  tool, for example,.

It is probably easiest to describe dead keys with examples. Although the results are locale dependent, the concepts should remain the same regardless of locale. The examples contain UTF-8, so to view them you need to either tell your browser to view the page as UTF-8, or have a UTF-8 locale already configured.

When I press AltGr and [ at once, release them, and then press a, 'ä' is produced. When I press AltGr and [ at once, and then press e, 'ë' is produced. When I press AltGr and ; at once, 'á' is produced, and when I press AltGr and ; at once, release them, and then press e, 'é' is produced.

By pressing AltGr, Shift and [ at once, releasing them, and then pressing a, a Scandinavian 'å' is produced. Similarly, when I press AltGr, Shift and [ at once, release only the [, and then press it again, '°' is produced. Although it looks like one, this (U+02DA) is not the same as a degree symbol (U+00B0).

AltGr can be used with alphabetical keys alone. For example, AltGr and m, a Greek lower-case letter mu is produced. AltGr and s produce a scharfes s or esszet, etc. As many European users would expect (because it is marked on their keyboard), AltGr and 4 (or E depending on the keyboard layout) produces a Euro sign, '€'.

Resources

 * The Wikipedia entry for Unicode
 * The Wikipedia entry for UTF-8
 * Unicode.org
 * UTF-8.com
 * RFC 3629
 * RFC 2277
 * Characters vs. Bytes

System Configuration Files (in /etc)
Most system configuration files, such as, do not support UTF-8. It is recommended to stick with the ASCII character set for these files.

Acknowledgements
We would like to thank the following authors and editors for their contributions to this guide:


 * Thomas Martin
 * Alexander Simonov
 * Shyam Mani
 * nightmorph