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 texte 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écessaires 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 à.

For changing the encoding of filenames, can be used.

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, définie dans  , devrait spécifier une carte de clavier Unicode.

Example /etc/conf.d/keymaps snippet

Ncurses et Slang
It is wise to add  to your global USE flags in, and then to remerge  and  if appropriate. Portage will do this automatically when you update your system:

We also need to rebuild packages that link to these, now the USE changes have been applied. The tool we use is part of the  package.

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, tous les glyphes particuliers accessibles par Unicode n'aient été créés 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.

Terminal emulators that use Xft and support Unicode are harder to come by. Aside from Konsole and gnome-terminal, the best options in Portage are, , , , or plain when built with the   USE flag and invoked as. supports UTF-8 too, when invoked as  or the following is put into the :

~/.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.

GNU Emacs depuis la version 23 et XEmacs version 21.5 prennent totalement en charge l'UTF-8. GNU Emacs 24 prend aussi en charge l'édition de textes bidirectionnels.

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
These are commonly used text-based browsers, and we shall see how we can enable UTF-8 support on them. On  and , there are two ways to go about this, one using the Setup option from within the browser or editing the config file. To set the option through the browser, open a site with  or   and then  +  to enter the Setup Menu then select Terminal options, or press. Scroll down and select the last option  by pressing. Then Save and exit the menu. On  you may have to do a repeat  +  and then press  to save. The config file option, is shown below.

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] :

Test complet
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.

Lorsque vous utilisez un des navigateurs seulement textuels, assurez-vous bien d'utiliser un terminal prédisposé UTF-8.

Si vous voyez certains caractères affichés sous forme de boîte avec des lettres ou des chiffres dedans, ceci signifie que votre police de caractères ne dispose pas de caractère pour ce symbole ou ce glyphe attendu par UTF-8. À la place, il affiche une boîte avec de code hexadécimal du symbole UTF-8.


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

Méthodes d'entrée
Dead keys may be used to input characters in X that are not included on your keyboard. These work by pressing your right key (or in some countries, ) 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 key at the same time as pressing the  and modifier.

Pour activer les touches mortes dans X, vous devez utiliser un arrangement de clavier qui les prend en charge. La plupart des arrangements de clavier européens ont déjà les touches mortes avec leur variante par défaut. Cependant, ce n'est pas le cas des arrangements de clavier nord-américain. Bien qu'il puisse y avoir un certain manque de cohérence entre les arrangements de clavier, la solution la plus simple semble d'utiliser un arrangement de la forme en_US plutôt que us, par exemple. L'arrangement de clavier est défini dans  de la manière suivante :

/etc/X11/xorg.conf snippet

Ces changements prennent effet après redémarrage de votre serveur X. Pour appliquer les changements immédiatement, utilisez l'outil, par exemple,.

Il est probablement plus facile de décrire les touches mortes avec des exemples. Bien que les résultats dépendent du choix de la locale, les concepts devraient rester les mêmes indépendamment de la locale. Les exemples contiennent l'UTF-8, aussi pour les voir devriez-vous indiquer à votre navigateur de lire les pages en UTF-8, ou avoir une locale UTF-8 déjà configurée.

When I press and  at once, release them, and then press, 'ä' is produced. When I press and  at once, and then press, 'ë' is produced. When I press and  at once, and then press, 'á' is produced, and when I press  and  at once, release them, and then press , 'é' is produced.

By pressing, and  at once, releasing them, and then pressing , a Scandinavian 'å' is produced. Similarly, when I press, 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).

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

Ressources

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

Fichiers de configuration système (dans /etc)
La plupart des fichiers de configuration, tels que, ne prennent pas en charge l'UTF-8. Il est recommandé de s'en tenir aux caractères ASCII pour ces fichiers.

Remerciements
Nous tenons à remercier les auteurs et éditeurs suivants pour leur contribution à ce guide :


 * Thomas Martin
 * Alexander Simonov
 * Shyam Mani
 * nightmorph