UTF-8 est un format de codage de caractères (charset) élargi qui permets l’utilisation de divers caractères de plusieurs langues, contrairement aux formats plus vieux, comme iso-8859-1, qui requiert une forme d’encodage afin d’accepter, par exemple, des lettres accentuées ou des caractères spéciaux. UTF-8 est devenu la norme moderne pour le format de codage des sites web, et la plupart des navigateurs et systèmes d’exploitation actuels peuvent maintenant le supporter sans problèmes, donc il est bon temps de profiter de tous ses avantages.
Voici un exemple de texte français en iso-8859-1 avec des entités de caractère (HTML entities) dans le code HTML pour les lettres accentuées. Prenons la première phrase de l’article Wikipédia sur les entités de caractère:
Une entité de caractère, ou référence de caractère, est un code SGML qui référence un caractère de la norme UCS. Elle permet d’afficher des caractères indépendamment du jeu du document.
Voyez comment les lettres accentuées doivent toutes commencer par le symbole & ? Ça rends le texte un peu difficile à lire quand on travaille dans le code. Et c’est complètement impossible à déchiffrer si le texte est, par exemple, dans une langue non latine comme le japonais. Cette même ligne de texte apparaîtrait ainsi en UTF-8:
Une entité de caractère, ou référence de caractère, est un code SGML qui référence un caractère de la norme UCS. Elle permet d’afficher des caractères indépendamment du jeu du document.
C’est mieux non? Vous êtes donc maintenant convaincu, votre prochain site web sera en UTF-8. Pas si vite. Évidemment, ce n’est jamais exactement aussi simple qu’on le voudrait, comme je m’en suis rendu compte alors que j’avais décidé de convertir un site web qui allait recevoir des versions traduites en plusieurs langues.
La première chose à faire est la plus simple. Il faut indiquer le format de codage de caractères dans l’en-tête (headers) de vos pages comme suit:
Ou si vous convertissez un site, remplacer votre ancienne balise iso-8859-1 (ou autre):
Avec la ligne précédente. Ce qui devrait donner ceci:
Titre
Mais ce n’est pas tout de remplacer cette balise, il faut aussi que votre éditeur HTML sauvegarde vos fichiers dans le format indiqué, parce que le code binaire du fichier sera différent en UTF-8. Si le code binaire de votre fichier est dans le format précédant et que votre en-tête HTML indique UTF-8, il y aura des conflits.
La plupart des éditeurs web professionnels (je pense à Dreamweaver) n’auront pas de problèmes et le feront automatiquement, mais un éditeur texte simple comme Notepad ne supporte pas cette option. Un exemple d’éditeur web gratuit qui supporte la sauvegarde en UTF-8 est Notepad++. Pour rester avec Dreamweaver, dans le dialogue au moment de la sauvegarde, il affichera les options « Unicode Normalization Form ». Je choisi normalement cette variante:
Unicode Normalization Form: C (Canonical Decomposition, followed by Canonical Composition)
Et je ne sélecte pas l’option « Include Unicode Signature (BOM) », qui reste décochée.
Si vous tentez de convertir votre site existant en entier en faisant un « Search & Replace » (faites une copie de sauvegarde!), assurez-vous qu’il sauvegarde bien les nouveaux fichiers dans le format UTF-8 après les changements.
Un autre détail pour être sur que tout roule bien, si vous avez des form
dans vos pages, il est recommendé d’indiquer le bon charset pour l’information qui sera envoyée avec l’attribut accept-charset="UTF-8"
, comme suit:
Merci beaucoup pour tout ces conseils.