Afin de définir le jeu de caractères pour le Doctype HTML5, quelle notation dois-je utiliser ?
Courte :
<meta charset="utf-8" ; />
Long :
<meta http-equiv="Content-Type" ; content="text/html ; charset=utf-8" ; />
En HTML5, ils sont équivalents. Utilisez le plus court, il est plus facile à retenir et à taper. [La prise en charge par les navigateurs est bonne][1] car elle a été conçue pour la rétrocompatibilité.
[1] : http://code.google.com/p/doctype-mirror/wiki/MetaCharsetAttribute
Les deux formes de la déclaration meta charset sont équivalentes et devraient fonctionner de la même manière dans tous les navigateurs. Cependant, il y a quelques points dont vous devez vous souvenir lorsque vous déclarez que le jeu de caractères de vos fichiers Web est UTF-8 :
Les serveurs Apache sont configurés pour servir les fichiers en ISO-8859-1 par défaut, vous devez donc ajouter la ligne suivante à votre fichier .htaccess
:
AddDefaultCharset UTF-8
Cela configurera Apache pour qu'il serve vos fichiers en déclarant l'encodage UTF-8 dans l'en-tête de réponse Content-Type, mais vos fichiers doivent être enregistrés en UTF-8 (sans BOM) pour commencer.
Notepad ne peut pas enregistrer vos fichiers en UTF-8 sans le BOM. Un éditeur gratuit qui le peut est [Notepad++][1]. Dans la barre de menu du programme, sélectionnez "Encodage > Encoder en UTF-8 sans BOM". Vous pouvez également ouvrir des fichiers et les réenregistrer en UTF-8 en utilisant "Encodage > Convertir en UTF-8 sans BOM".
Plus d'informations sur le [Byte Order Mark (BOM) sur Wikipedia][2].
[1] : http://notepad-plus-plus.org/ [2] : http://en.wikipedia.org/wiki/Byte_order_mark
Une autre raison de choisir la version courte est qu'elle correspond à d'autres cas où vous pouvez spécifier un jeu de caractères dans le balisage. Par exemple :
<script type="javascript" charset="UTF-8" src="/script.js"></script>
<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>
La cohérence contribue à réduire les erreurs et à rendre le code plus lisible.
Notez que l'attribut charset est insensible à la casse. Vous pouvez utiliser UTF-8 ou utf-8, mais UTF-8 est plus clair, plus lisible et plus précis.
En outre, il n'y a absolument aucune raison d'utiliser une autre valeur que UTF-8 dans l'attribut meta charset ou dans l'en-tête de page. UTF-8 est le codage par défaut des documents Web depuis HTML4 en 1999 et la seule façon pratique de créer des pages Web modernes.
Vous ne devez pas non plus utiliser les entités HTML en UTF-8. Les caractères tels que le symbole du copyright doivent être saisis directement. Les seules entités que vous devriez utiliser sont les 5 caractères de balisage réservés : moins que, plus que, esperluette, prime, double prime. Les entités nécessitent un analyseur HTML, que vous ne souhaitez pas toujours utiliser à l'avenir. Elles introduisent des erreurs, rendent votre code moins lisible, augmentent la taille de vos fichiers et sont parfois mal décodées dans les différents navigateurs en fonction des entités utilisées. Apprenez à taper/insérer le copyright, la marque, le guillemet ouvert, le guillemet fermé, l'apostrophe, le tiret em, le tiret en, la puce, l'euro et tout autre caractère que vous rencontrez dans votre contenu, et utilisez ces caractères réels dans votre code. Le Mac dispose d'un visualiseur de caractères que vous pouvez activer dans les préférences système du clavier, et vous pouvez trouver puis faire glisser les caractères dont vous avez besoin, ou utiliser le visualiseur de clavier correspondant pour voir quelles touches taper. Par exemple, la marque est Option+2. UTF-8 contient tous les caractères et symboles de toutes les langues humaines écrites. Il n'y a donc aucune excuse pour utiliser -- au lieu d'un tiret em. Ce n'est pas une mauvaise idée d'apprendre les règles de ponctuation et de typographie... par exemple, savoir qu'un point se place à l'intérieur d'un guillemet fermé, et non à l'extérieur.
L'utilisation d'une balise <meta> pour quelque chose comme content-type et encodage est très L'utilisation d'une balise <meta> pour quelque chose comme content-type et encoding est très ironique, car sans ces informations, vous ne pourriez pas analyser le fichier pour obtenir la valeur de la balise meta.
Non, ce n'est pas vrai. Le navigateur commence à analyser le fichier avec l'encodage par défaut du navigateur, soit UTF-8, soit ISO-8859-1. Puisque US-ASCII est un sous-ensemble de ISO-8859-1 et UTF-8, le navigateur peut lire
très bien dans les deux cas ... c'est la même chose. Lorsque le navigateur rencontre la balise meta charset, si l'encodage est différent de celui que le navigateur utilise déjà, il recharge la page dans l'encodage spécifié. C'est pourquoi nous plaçons la balise meta charset en haut, juste après la balise head, avant toute autre chose, même le titre. Ainsi, vous pouvez utiliser des caractères UTF-8 dans votre titre.Vous devez enregistrer vos fichiers en encodage UTF-8 sans BOM.
Ce n'est pas strictement vrai. Si vous n'avez que des caractères US-ASCII dans votre document, vous pouvez l'enregistrer en US-ASCII et le servir en UTF-8, car c'est un sous-ensemble. Mais s'il y a des caractères Unicode, vous avez raison, vous devez l'enregistrer en UTF-8 sans BOM.
Si vous voulez un bon éditeur de texte qui enregistrera vos fichiers en UTF-8, je vous recommande Notepad++.
Sur Mac, utilisez Bare Bones TextWrangler (gratuit) sur le Mac App Store, ou Bare Bones BBEdit qui se trouve sur le Mac App Store pour 39,99 $ ... très bon marché pour un si bon outil. Dans l'une ou l'autre de ces applications, il y a un menu en bas de la fenêtre du document où vous pouvez spécifier l'encodage du document et vous pouvez facilement choisir "UTF-8 no BOM". Et bien sûr, vous pouvez définir ce choix par défaut pour les nouveaux documents dans les Préférences.
Mais si votre serveur Web fournit l'encodage dans l'en-tête HTTP, ce qui est recommandé, les deux [meta tags] sont inutiles.
C'est une erreur. Vous devez bien sûr définir l'encodage dans l'en-tête HTTP, mais également dans l'attribut meta charset afin que l'utilisateur puisse enregistrer la page, la sortir du navigateur pour la stocker en local et la rouvrir ultérieurement, auquel cas la seule indication de l'encodage présente sera l'attribut meta charset. Vous devez également définir une balise base pour la même raison... sur le serveur, la balise base n'est pas nécessaire, mais lorsqu'elle est ouverte à partir d'un stockage local, la balise base permet à la page de fonctionner comme si elle était sur le serveur, avec tous les actifs en place et ainsi de suite, sans liens brisés.
AddDefaultCharset UTF-8
Ou vous pouvez simplement modifier l'encodage de certains types de fichiers comme suit :
AddType text/html;charset=utf-8 html
Une astuce pour servir à la fois les fichiers UTF-8 et Latin-1 (ISO-8859-1) consiste à donner aux fichiers UTF-8 une extension "text" et aux fichiers Latin-1 "txt".
AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text
Enfin, pensez à enregistrer vos documents avec les terminaisons de ligne d'Unix, et non celles du DOS ou du Mac (classique), qui n'aident pas et peuvent nuire, surtout à mesure que nous nous éloignons de ces systèmes. Un document HTML avec du HTML5 valide, un encodage UTF-8 et des terminaisons de ligne Unix est un travail bien fait. Vous pouvez partager, modifier, stocker, lire, récupérer et vous appuyer sur ce document dans de nombreux contextes. C'est la lingua franca. C'est du papier numérique.