180 votes

Pourquoi spécifier @charset "UTF-8" dans votre fichier css

J'ai vu cette instruction comme la toute première ligne de nombreux fichiers CSS qui m'ont été remis.

 @charset "UTF-8";
 

Que fait-il et cette spécification est-elle nécessaire?

En outre, si j'inclus cette balise META dans ma balise "head", cela éliminerait-il le besoin de la présenter également dans mes fichiers CSS?

 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 

148voto

toscho Points 29302

Ceci est utile dans les contextes où le codage n'est pas dit par l'en-tête HTTP ou d'autres méta-données, par exemple le système de fichiers local.

Imaginez la feuille de style suivant:

[rel="external"]::after
{
    content: ' ↗';
}

Si un lecteur enregistre le fichier sur un disque dur et que vous omettez l' @charset règle, la plupart des navigateurs de lire dans les OS locale de l'encodage, par exemple, Windows-1252, et insérer â†- au lieu d'une flèche.

Malheureusement, vous ne pouvez pas compter sur ce mécanisme que le support est plutôt rare. Et n'oubliez pas que sur le net un en-tête HTTP aura toujours la priorité sur l' @charset règle.

La correcte des règles pour déterminer le jeu de caractères d'une feuille de style sont dans l'ordre de priorité:

  1. HTTP Charset en-tête.
  2. Marque D'Ordre Des Octets.
  3. La première @charset règle.
  4. UTF-8.

La dernière règle est la plus faible, il va échouer dans certains navigateurs.
L' charset d'attribut en <link rel='stylesheet' charset='utf-8'> est obsolète en HTML 5.
Méfiez-vous des conflits entre les différentes déclarations. Ils ne sont pas facile à déboguer.

Lecture recommandée

128voto

Oded Points 271275

Il indique au navigateur de lire le fichier CSS en tant que UTF-8. C'est pratique si CSS contient des caractères Unicode et pas seulement des caractères ASCII.

Son utilisation dans la balise meta est correcte, mais uniquement pour les pages qui incluent cette balise meta.

Lisez les règles pour la résolution des jeux de caractères des fichiers CSS à la spécification w3c pour CSS 2.

3voto

tony Points 11

L'une des raisons de toujours inclure une spécification de jeu de caractères sur chaque page contenant du texte est d'éviter les vulnérabilités de script entre sites. Dans la plupart des cas, le jeu de caractères UTF-8 est le meilleur choix pour le texte, y compris les pages HTML.

2voto

WJS Points 1

Si vous mettez une balise <meta> dans vos fichiers CSS, vous faites quelque chose de mal. La balise <meta> appartient à vos fichiers html et indique au navigateur comment le code HTML est encodé, il ne dit rien sur le css, qui est un fichier séparé. Vous pourriez avoir des encodages complètement différents pour votre HTML et CSS, même si je ne peux pas imaginer que ce serait une bonne idée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X