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 eux-mêmes pas les textes imprimés comme les humains. Pour les ordinateurs, chaque caractère est représenté par un nombre. Traditionnellement, chaque jeu de nombres utilisé pour représenter les alphabets et les caractères (connus 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 la plus réussie jamais créée. 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 la détection d'erreurs n'est pas souhaitée, 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éenes 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.

The necessary development of completely different single-byte encodings for non-Latin alphabets, such as EUC (Extended Unix Coding) which is used for Japanese and Korean (and to a lesser extent Chinese) created more confusion. Other operating systems still used different character sets for the same languages, for example, Shift-JIS and ISO-2022-JP. Users wishing to view cyrillic glyphs had to choose between KOI8-R for Russian and Bulgarian or KOI8-U for Ukrainian, as well as all the other cyrillic encodings such as the unsuccessful ISO 8859-5, and the common Windows-1251 set. All of these character sets broke most compatibility with ASCII. Although it should be mentioned KOI8 encodings place cyrillic characters in Latin order, so in case the eighth bit is stripped, text is still decipherable on an ASCII terminal through case-reversed transliteration.

Tout cela conduisait à la confusion générale, et à 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 tous les caractères dont un utilisateur aura 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; C'est de ce fait l'objet de ce document.

Ce que UTF-8 peut faire
UTF-8 permet aux utilisateurs 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 les principes d'Unicode ont été établis, préparez-vous à utiliser UTF-8 sur votre système.

Pour les utilisateurs qui veulent en savoir plus, une explication détaillée peut-être trouvée dans le Gentoo Localization Guide.

Ensuite, l'utilisateur doit décider si une locale UTF-8 est déjà disponible pour la langue choisie, ou si elle doit être générée.

De la sortie de la commande ci-dessus, cherchez un résultat avec un suffixe similaire à. S'il n'y a aucun résultat avec un suffixe similaire, une locale compatible UTF-8 doit être créée.

Remplacez "en_GB" avec le code de locale souhaité :

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 en utilisant la commande. Les locales seront écrites dans le fichier.

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 les nouvelles locales UTF-8 : LC_CTYPE (optionnellement, modifiez la variable LANG pour également changer la langue du système). Il y a aussi différentes manières de la définir ; certains administrateurs systèmes préfèrent avoir un environnement UTF-8 pour un utilisateur donné, auquel cas ils la définissent dans leur fichier ( pour les utilisateurs de Bourne shell),  ou  ( pour les utilisateurs de Bourne again shell). Plus de détails et de bonnes pratiques sont disponibles dans le Localization Guide.

D'autres encore préfèrent la définir globalement. Une circonstance particulière où l'auteur recommande fortement de procéder de cette manière 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 évalués. En d'autre termes, l'action est performée avant qu'aucune des variables ne soit chargée dans l'environnement.

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

Ensuite, l'environnement doit être mis à jour en exécutant la commande suivante :

Maintenant, exécutez la commande   sans arguments pour voir si les variables correctes ont été chargées dans l'environnement.

Sinon, en utilisant eselect pour définir les locales
Même s'il est bon d'entretenir le système comme décrit ci-dessus, c'est possible de vérifier la locale correctement configurée en utilisant l'utilitaire.

Utilisez pour lister toutes les locales disponibles sur le système :

Utiliser pour définir la locale est aussi simple que pour les lister. Une fois que la bonne locale a été choisie, exécuter:

Vérifiez le résultat :

Au cas où il ait préféré d'avoir avec   au lieu de , exécutez la commande  correspondante :

Executer la commande suivante va mettre à jour les variables du shell :

C'est tout. Le système utilise désormais les locales UTF-8. Le prochain obstacle est la configuration des applications utilisées 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, qui est le langage de base pour beaucoup de programmes couramment utilisés. Même aujourd'hui, certains programmes ne sont pas capables de prendre en charge l'UTF-8 correctement. Fort heureusement, la majorité des programmes, surtout les plus utilisés, sont supportés.

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 qui doit être faite est de compiler la prise en charge de UTF-8 NLS dans le noyau, et de changer l'option par défaut de NLS en utf8.

When planning to mount NTFS partitions, users may need to specify a  option with mount. When planning on mounting FAT partitions, users may need to specify a  option with mount. Optionally, users can also set a default codepage for FAT in the kernel configuration.

Avoid setting  to UTF-8; it is not recommended. Instead, pass the  option when mounting FAT partitions. For further information or see the appropriate kernel documentation at

For changing the encoding of filenames, can be used.

The format of the command is as follows:

Substitute iso-8859-1 with the charset being converted from:

For changing the contents of files, use the utility, it comes bundled with  and should be installed on all Gentoo systems. Substitute iso-8859-1 with the charset being converted from. After running the command be sure to check for sane output:

To convert a file, another file must be created:

The recode package can also be used for this purpose.

The system console
To enable UTF-8 on the console edit. Set  and read the comments -- it is important to have a font that has a good range of characters to make the most of Unicode. For this to work make sure the Unicode locale has been properly created.

The keymap variable, set in, should have a Unicode keymap specified.

Ncurses et Slang
It is wise to add to the global USE flags in, and then to re-emerge  and. Portage will do this automatically if the  or   options are used. Run the following command to pull in the packages:

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, and 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.

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 and fonts
TrueType fonts have support for Unicode, and most of the fonts that ship with Xorg have extensive character support, although, obviously, not every single glyph available in Unicode has been created for that font.

Also, many font packages in Portage are Unicode aware. See the Fontconfig page for more information on recommended fonts and configuration.

Window managers and terminal emulators
Window managers not built on GTK+ or Qt generally have very good Unicode support, as they often use the Xft library for handling fonts. If the window manager does not use Xft for fonts, then it is still possible to use the FontSpec mentioned in the previous section as a Unicode font.

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 :

Vim, emacs, xemacs, and nano
Vim provides full UTF-8 support, and also has builtin detection of UTF-8 files. For further information in Vim, use.

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
Currently, provides full Unicode support through the GNU readline library. Z Shell offers Unicode support with the   USE flag.

The C shell, and  do not provide UTF-8 support at all.

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.

For channels where non-ASCII characters are often exchanged in non-UTF-8 charsets, the command may be used to convert the characters. Type for more information.

Mutt
The Mutt mail user agent has very good Unicode support. To use UTF-8 with Mutt, nothing needs to be put in the configuration files. Mutt will work under Unicode environment without modification if all the configuration files (signature included) are UTF-8 encoded.

Une information complémentaire est disponible sur Mutt Wiki.

Man
Man pages are an integral part of any Linux machine. To ensure that any unicode in the man pages render correctly, edit and replace a line as shown below. This is only needed when is used instead of.

links and elinks
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 one may have to do a repeat + and then press  to save. The config file option, is shown below.

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 most of the popular browsers in Gentoo have full UTF-8 support.

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

If certain characters are displayed as boxes with letters or numbers inside, then the current font does not have glyphs for those characters. Instead, it displays a box with the hex code of the UTF-8 symbol.


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

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.

External resources

 * The Wikipedia entry for Unicode
 * The Wikipedia entry for UTF-8
 * Unicode.org
 * UTF-8.com
 * RFC 3629
 * RFC 2277
 * Characters vs. Bytes
 * The GNU C Library: Locales and Internationalization
 * Unifoundry.com - Unicode Tutorial
 * unicode USE flag description