UTF-8/fr

UTF-8 est un procédé de chiffrage de caractères sur un nombre variable d'octets (en l'occurrence de 1 à 4 octets) par symbole. Le premier octet de l' UTF-8 est utilisé pour les caractères de l'ASCII, conférant ainsi au jeu de caractères une rétrocompatibilité avec l'ASCII. UTF-8 signifie que les caractères ASCII et les caractères latins sont interchangeables au prix d'une légère augmentation de la taille des données, parce que seul le premier octet est utilisé. Les utilisateurs d'alphabets de l'Est comme le Japonais, à qui ont a assigné une plage d'octets plus élevée ne sont pas satisfait car cela conduit à une redondance de plus de 50% 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éennes 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étrocompatibles 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, la norme Windows-1252 est utilisée à leurs 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'encodages mono-octets 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. D'autres systèmes d'exploitation utilisaient encore 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. Il faudrait cependant mentionner que le jeu KOI8 place les caractères cyrilliques dans l'ordre latin, de telle manière 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.

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, il est temps d'utiliser UTF-8 !

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

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

Remplacer "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, modifier 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 Guide de localisation Gentoo.

D'autres encore préfèrent la définir globalement. Une circonstance particulière où il est fortement recommandé 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 réalisée avant qu'aucune des variables ne soit chargée dans l'environnement.

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

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

Maintenant, exécuter 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, il est possible de vérifier la locale correctement configurée en utilisant l'utilitaire.

Utiliser 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.

S'il est envisagé de monter des partitions NTFS, les utilisateurs peuvent avoir besoin de spécifier une option  via. S'il est envisagé de monter des partitions FAT, les utilisateurs peuvent avoir besoin de spécifier une option   via. En option, les utilisateurs peuvent aussi définir une page de code (codepage) par défaut pour FAT dans la configuration du noyau.

Evitez de définir le paramètre  (jeu de caractères par défaut pour fat) à UTF-8 ; ce n'est pas recommandé. Au lieu de cela, passez l'option  au moment de monter une partition FAT. Pour plus d'informations,, ou reportez-vous à la documentation du noyau à.

Pour changer l'encodage des noms de fichiers, peut être utilisé.

Le format de la commande est le suivant :

Remplacez iso-8859-1 par le jeu de caractères à partir duquel la conversion est effectuée :

Pour changer le contenu de fichiers, utilisez l'utilitaire, il est fourni avec et devrait être installé sur tous les systèmes Gentoo. Remplacez iso-8859-1 par le jeu de caractères à partir duquel la conversion est effectuée. Après avoir exécuté la commande, vérifiez que la sortie est saine :

Pour convertir un fichier, un autre fichier doit être créé :

Le paquet recode peut aussi être utilisé à cet effet.

La console système
Pour activer UTF-8 dans la console, éditez. Définissez, et lisez aussi les commentaires du fichier-- c'est important d'avoir une police de caractères qui dispose d'une bonne plage de caractères pour une meilleur utilisation d'Unicode. Pour que cela fonctionne, assurez-vous que la locale Unicode a été correctement créée.

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

Ncurses et Slang
Il est sage d'ajouter aux options globales de votre variable USE dans le fichier, et de réinstaller  et. Portage le fera automatiquement si les options  ou   sont utilisées. Executez la commande suivante pour installer le paquet :

Il 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 fonctionneront 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 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 prise en charge étendue, 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 Bitstream 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. Voir la page Fontconfig pour plus d'informations sur les polices recommandées et leur configuration.

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 le gestionnaire de fenêtres n'utilise pas les polices Xft, il est alors possible d'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 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  :

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 plsu d'informations 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 de 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 d'Unicode. Pour utiliser UTF-8 avec Mutt, rien n'est à mettre dans les fichiers de configuration. Mutt travaille dans un environnement Unicode sans modification si tous les 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 les pages man est rendu correctement, éditez le fichier et remplacez une ligne comme indiqué ci-dessous. C'est seulement nécessaire quand est utilisé au lieu de.

links et elinks
Il s'agit ici de navigateurs 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. 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 :

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
Il y a de nombreux sites web de test en UTF-8 et la pluspart des navigateurs web disponibles dans Gentoo disposent d'une prise en charge complète de l'UTF-8.

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

Si certains caractères affichés sous forme de boîte avec des lettres ou des chiffres dedans, cela 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.


 * unicode-table.com
 * Une page de test Unicode de W3C
 * Une page de test Unicode fournie par l'Université de Frankfort

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.

Ressources externes

 * 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