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 ont été remis à moi:

@charset "UTF-8";

Ce qu'il fait, et est-ce à la règle nécessaire?

aussi, si j'inclue cette balise meta dans mon élément" head", est-ce que cela éliminerait la nécessité de l'avoir aussi présente dans Mes fichiers CSS?

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
161
demandé sur Web_Designer 2010-03-26 22:16:44

4 réponses

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

L'utiliser dans la balise meta est très bien, mais seulement pour les pages qui incluent cette balise meta.

lisez à propos des règles pour la résolution des jeux de caractères des fichiers CSS au W3C spec pour CSS 2.

116
répondu Oded 2010-03-26 20:17:05

ceci est utile dans les contextes où l'encodage n'est pas indiqué par l'en-tête HTTP ou d'autres métadonnées, par exemple le système de fichiers local.

Imaginez la feuille de style suivante:

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

si un lecteur sauvegarde le fichier sur un disque dur et que vous omettez la règle @charset , la plupart des navigateurs le liront dans l'encodage local de L'OS, par exemple Windows-1252, et inséreront â†- au lieu d'une flèche.

malheureusement, vous ne pouvez pas compter sur ce mécanisme que le support est plutôt ... rare. Et rappelez-vous que sur le net, un en-tête HTTP annulera toujours la règle @charset .

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

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

la dernière règle est la plus faible, il will échec dans certains navigateurs.

L'attribut charset dans <link rel='stylesheet' charset='utf-8'> est obsolète dans HTML 5 .

Attention aux conflits entre les différentes déclarations. Ils ne sont pas faciles à déboguer.

lecture recommandée

142
répondu fuxia 2012-06-20 14:41:11

une raison 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 scripting cross site. Dans la plupart des cas, le jeu de caractères UTF-8 est le meilleur choix pour le texte, y compris les pages HTML.

2
répondu tony 2013-12-15 16:36:26

si vous mettez une balise 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 soit une bonne idée.

2
répondu WJS 2014-02-09 17:52:48