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">
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.
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é:
- en-tête de Charset HTTP.
- Marque D'Ordre Des Octets.
- La première
@charset
la règle. - 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
- Russ Rolfe: caractère déclarant codages en CSS
- IANA: noms officiels pour les jeux de caractères – les autres noms ne sont pas autorisés; utiliser le nom préféré pour
@charset
si plus d'un nom est enregistré pour le même codage. - MDN:
@charset
. Il y a une table de soutien. Je n'ai pas confiance. :) - cas de Test dans le CSS WG.
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.
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.