====== Jeu de caractères UTF-8 ======
Depuis août 2005, le jeux de caractères (//charset//) utilisé sur toute machine Linux est UTF-8 (ISO 10646-1), permettant ainsi un affichage des caractères de la majorité des langues. Cette utilisation affecte l'affichage et la saisie des caractères sous Linux, de même que la représentation des noms de fichiers sur les serveurs Linux, même si ces fichiers sont édités à partir d'autres plateformes, comme Windows ou Macintosh.
===== Encodage des noms de fichiers et répertoires =====
Quelle que soit la plateforme sur laquelle l'usager travaille, s'il utilise des fichiers ou répertoires qui résident sur nos machines Linux (i.e. serveurs de fichiers du département ou de laboratoires), cet usager devra s'assurer que leurs noms soient en UTF-8 pour que ceux-ci s'affichent correctement. Si le nom d'un fichier ou répertoire est dans un encodage autre (notamment iso-latin-1 ou ISO-8859-1), voici la procédure à suivre pour le renommer en UTF-8:
- se brancher sur la machine Linux **''arcade.iro.umontreal.ca''** ou sur son serveur si son compte est sur un serveur de recherche, ou ouvrir une fenêtre de terminal vous travaillez déjà sur une machine Linux du département
- convertir les noms de fichiers ou répertoires dans le nouveau format en utilisant la commande qui permet de modifier les noms de fichiers au format UTF-8 : /usr/local/bin/renommer-utf8
==== renommer-utf8 ====
**Usage :** renommer-utf8 [-r] [-d] [-o] [nom-fichier]* [nom-répertoire]*
La commande traite tous les fichiers ou répertoires spécifiés en paramètres. Sans paramètre, elle traite tous les fichiers ou répertoires du répertoire courant (équivalent à ''-d .''; voir ci-après).
**Options :**
* **''-r''** : renommer récursivement tous les fichiers ou répertoire à partir du répertoire courant ou ceux spécifiés en paramètre
* **''-d''** : renommer tous les fichiers ou répertoires mais uniquement ceux situés dans le répertoire courant ou ceux spécifiés en paramètre
* **''-o''** : pour accepter automatiquement le nouveau nom de fichier ou répertoire
===== Affichage et saisie de caractères =====
Puisque que nos machines Linux utilisent UTF-8 pour l'affichage et la saisie, **uniquement les usagers des autres plateformes, à savoir Macintosh et Windows**, doivent configurer leurs logiciels d'émulation de terminal en conséquence.
//Rappel aux usagers Linux//: pour basculer du clavier anglais au français, consulter la procédure de configuration du [[:logiciel:clavier#configuration_de_clavier_sous_linux|clavier]].
==== Windows ====
Si nécessaire, les usagers Windows doivent procéder à la configuration du logiciel [[:logiciel:windows#putty|PuTTY]] pour obtenir un affichage correct.
==== Macintosh ====
* L'application **Terminal** fonctionne toujours en UTF-8 avec les ajustements suivants :
- dans les préférences de fenêtre, section Émulation, décocher « escape non-ASCII characters »
- dans Display, mettre « character set encoding » à UTF-8 mais c'est la valeur de défaut pour ceux qui ne l'ont pas changée.
* L'application **X11** utilise, comme sur Linux, la variable ''LC_CTYPE'' pour déterminer comment afficher les caractères. Par défaut, elle affiche en ISO-Latin1. Vous devrez donc changer votre configuration pour travailler sur nos machines Linux avec X11 à partir d'un Mac. Connectez-vous sur votre serveur et dans un terminal, tapez les commandes suivantes: mkdir -p ~/.MacOSX
defaults write ~/.MacOSX/environment LC_CTYPE fr_CA.UTF-8
Ceci va créer le fichier ''~/.MacOSX/environment.plist'' qui est l'équivalent primitif du ''.login'' (ou ''.profile'') de UNIX. Il faut vous déconnecter et vous reconnecter pour qu'il soit lu.
===== Contenu des fichiers et programmes =====
Si vous êtes un utilisateur de Linux et que vous avez de vieux documents qui sont encodés en ISO-Latin1 (ou autre) sur nos machines Linux, le recodage en UTF-8 se fait avec la commande ''recode''. Voici un exemple d'usage typique pour des fichiers encodés en ISO-Latin1:
recode latin1..utf8 fichier
Pour plus d'information sur cette commande, consultez sa //manpage// (''man recode'').
==== Affichage des programmes ====
Beaucoup de programmes sont dit localisés, //i.e.// ils ajustent l'encodage de leur sortie (affichage, fichiers produits) en fonction des paramètres du système. C'est le cas, par exemple, des programmes écrits en Java et certains programmes en Perl. Dans ce cas, il n'y a théoriquement rien à faire, les routines de localisation s'adapteront aux paramètres du système et feront le travail en UTF-8.
Pour les programmes non localisés, la procédure à suivre dépend de la situation:
* s'il s'agit d'un de ses programmes qui, par exemples, contient des chaînes en ISO-Latin1 et compilé comme tel, il faut alors convertir tous les fichiers sources en UTF-8 en utilisant la commande ''recode'' décrite précédemment
* si l'option de conversion/recompilation n'est pas possible, vous pouvez alors convertir les fichiers produits avec la commande ''recode''; s'il y a des problèmes d'affichage, suivre plutôt la procédure de la section [[:logiciel:utf8#affichage_et_saisie_en_iso-latin1|Affichage et saisie en ISO-Latin1]]
==== pine ====
Bien que le logiciel ''pine'' supporte l'encodage UTF-8, il ne supporte pas la conversion d'autres encodages vers UTF-8. Son usage **n**'est donc **pas** recommandé.
==== Affichage et saisie en ISO-Latin1 ====
Si, pour une raison ou une autre, vous devez travailler en ISO-Latin1, vous pouvez ouvrir un terminal en ISO-Latin1 ainsi si votre //shell// est ''csh'' ou ''tcsh'': (setenv LC_CTYPE fr_CA ; xterm)
ou ainsi pour tout autre //shell//: LC_CTYPE=fr_CA xterm
Bien entendu, vous pouvez remplacer ''xterm'' par votre émulateur de terminal favori (''konsole'' dans KDE, par exemple).
===== Les sites Web =====
Le serveur Web ne donne aucune indication aux fureteurs sur la nature de l'encodage d'une page. La plupart des fureteurs peuvent auto-détecter l'encodage d'une page, à condition que l'option d'auto-détection soit active. Il est donc préférable d'utiliser les entités HTML ou alors d'employer une méthode pour indiquer explicitement l'encodage de la page au fureteur. Les sections suivantes décrivent les différentes méthodes possibles.
==== Entités HTML ====
L'usage des entités HTML est recommandé seulement pour les pages qui subissent peu de modification. Cependant, nous savons tous comment il peut être pénible de taper les caractères accentués ainsi. La solution est donc d'écrire la page avec les accents, et une fois terminée, vous pouvez la convertir pour utiliser les entités HTML ainsi:
recode -d utf8..html fichier.html
==== Usage de htaccess ====
Dans le répertoire racine des vos pages Web, ajouter un fichier **''.htaccess''** contenant la ligne suivante:
AddCharset UTF-8 .html
Il faut aussi s'assurer que tous les fichiers HTML sont [[:logiciel:utf8#contenu_des_fichiers_et_programmes|encodés en UTF-8]].
//Attention//: ''.htaccess'' est récursif, //i.e.// il s'applique également à tous les sous-répertoires.
==== Usage d'une balise meta ====
Une autre possibilité est de spécifier l'encodage pour chaque page individuelle avec une balise ''meta'' située dans la section ''head'' comme suit: