Question vs


Afin de définir le jeu de caractères pour Doctype HTML5, quelle notation dois-je utiliser?

  1. Court:

    <meta charset="utf-8" /> 
    
  2. Longue:

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

1387
2018-01-14 22:06


origine


Réponses:


En HTML5, ils sont équivalents. Utilisez le plus court, il est plus facile de se souvenir et de taper. Le support du navigateur est bien car il a été conçu pour la rétrocompatibilité.


978
2018-01-14 22:09



Les deux formes de meta charset Les déclarations sont équivalentes et devraient fonctionner de la même manière dans tous les navigateurs. Mais, il y a quelques choses dont vous devez vous souvenir lorsque vous déclarez vos fichiers web comme UTF-8:

  1. Sauvegardez vos fichiers en encodage UTF-8 sans pour autant la marque de l'ordre des octets (BOM).
  2. Déclarez l'encodage dans vos fichiers HTML en utilisant meta charset (comme ci-dessus).
  3. Votre serveur web doit servez vos fichiers en déclarant le codage UTF-8 dans l'en-tête HTTP Content-Type.

Les serveurs Apache sont configurés pour servir les fichiers dans ISO-8859-1 par défaut, vous devez donc ajouter la ligne suivante à votre .htaccess fichier:

AddDefaultCharset UTF-8

Cela configurera Apache pour servir vos fichiers déclarant le codage UTF-8 dans l'en-tête de réponse Content-Type, mais vos fichiers doit être sauvegardé en UTF-8 (sans nomenclature) pour commencer.

Bloc-notes ne peut pas enregistrer vos fichiers en UTF-8 sans la nomenclature. Un éditeur gratuit qui peut être Bloc-notes ++. Dans la barre de menu du programme, sélectionnez "Encodage> Encoder en UTF-8 sans nomenclature". Vous pouvez également ouvrir les fichiers et les réenregistrer en UTF-8 en utilisant "Encodage> Convertir en UTF-8 sans nomenclature".

Plus sur le Byte Order Mark (BOM) sur Wikipédia.


236
2018-05-21 07:26



Une autre raison pour aller avec le court est qu'il correspond à d'autres instances où vous pourriez 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 aide à réduire les erreurs et à rendre le code plus lisible.

Notez que l'attribut charset est sensible à la casse. Vous pouvez utiliser UTF-8 ou utf-8, mais UTF-8 est plus clair, plus lisible, plus précis.

En outre, il n'y a absolument aucune raison d'utiliser une valeur autre que UTF-8 dans l'attribut meta charset ou l'en-tête de la page. UTF-8 est l'encodage par défaut pour les documents Web depuis HTML4 en 1999 et le seul moyen pratique de créer des pages Web modernes.

De même, vous ne devez pas utiliser d'entités HTML en UTF-8. Les caractères comme le symbole de copyright doivent être tapés directement. Les seules entités que vous devez utiliser sont les 5 caractères de balisage réservés: inférieur à, supérieur à, esperluette, premier, double premier. Les entités ont besoin d'un analyseur HTML, que vous n'utiliserez pas toujours, ils introduisent des erreurs, rendent votre code moins lisible, augmentent la taille de vos fichiers et parfois décodent mal dans les différents navigateurs en fonction des entités utilisées. Apprenez à saisir / insérer des droits d'auteur, des marques, des devis, des guillemets, des apostrophes, des tirets, des tirets, des bulletins, des euros et d'autres caractères dans votre contenu, et utilisez ces caractères dans votre code. Le Mac dispose d'une visionneuse de caractères que vous pouvez activer dans la Préférence système du clavier, et vous pouvez trouver puis glisser et déposer les caractères dont vous avez besoin, ou utiliser la visionneuse de clavier correspondante pour voir les clés à taper. Par exemple, la marque est Option + 2. UTF-8 contient tous les caractères et symboles de chaque langue humaine écrite. Donc, il n'y a aucune excuse pour utiliser - au lieu d'un em dash. Ce n'est pas une mauvaise idée d'apprendre les règles de la ponctuation et de la typographie aussi ... par exemple, sachant qu'une période va à l'intérieur d'une citation close, pas à l'extérieur.

L'utilisation d'une balise pour quelque chose comme le type de contenu et l'encodage est très   ironique, puisque sans connaître ces choses, vous ne pourriez pas analyser le fichier   pour obtenir la valeur de la balise META.

Non, ce n'est pas vrai. Le navigateur commence par analyser le fichier comme encodage par défaut du navigateur, UTF-8 ou ISO-8859-1. Depuis l'US-ASCII est un sous-ensemble des deux ISO-8859-1 et UTF-8, le navigateur peut lire très bien de toute façon ... c'est pareil. Lorsque le navigateur rencontre la balise meta charset, si le codage est différent de ce que le navigateur utilise déjà, le navigateur 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. De cette façon, vous pouvez utiliser les caractères UTF-8 dans votre titre.

Vous devez enregistrer votre fichier (s) en encodage UTF-8 sans nomenclature

Ce n'est pas strictement vrai. Si vous n'avez que des caractères US-ASCII dans votre document, vous pouvez l'enregistrer en tant que US-ASCII et le servir en UTF-8, car il s'agit d'un sous-ensemble. Mais s'il y a des caractères Unicode, vous avez raison, vous devez enregistrer en UTF-8 sans nomenclature.

Si vous voulez un bon éditeur de texte qui sauvegardera vos fichiers   en UTF-8, je recommande Notepad ++.

Sur Mac, utilisez Bare Bones TextWrangler (gratuit) sur Mac App Store, ou Bare Bones BBEdit qui est au Mac App Store pour 39,99 $ ... très bon marché pour un si bon outil. Dans l'une ou l'autre application, il y a un menu au bas de la fenêtre du document où vous spécifiez le codage du document et vous pouvez facilement choisir "UTF-8 no BOM". Et bien sûr, vous pouvez définir cela comme la valeur par défaut pour les nouveaux documents dans les préférences.

Mais si votre serveur Web sert à l'encodage dans l'en-tête HTTP,   ce qui est recommandé, les deux [meta tags] sont inutiles.

C'est incorrect. Vous devez bien sûr définir l'encodage dans l'en-tête HTTP, mais vous devez également le définir dans l'attribut meta charset afin que la page puisse être sauvegardée par l'utilisateur, sortie du navigateur sur le stockage local puis réouverte plus tard, auquel cas la seule indication de l'encodage qui sera présent est l'attribut meta charset. Vous devez également définir une balise de base pour la même raison ... sur le serveur, la balise de base est inutile, mais lorsqu'elle est ouverte depuis le stockage local, la balise de base permet à la page de fonctionner comme si elle était sur le serveur. actifs en place et ainsi de suite, pas de liens brisés.

AddDefaultCharset UTF-8

Ou vous pouvez simplement changer l'encodage de types de fichiers particuliers comme ceci:

AddType text/html;charset=utf-8 html

Une astuce pour servir à la fois les fichiers UTF-8 et Latin-1 (ISO-8859-1) est de donner aux fichiers UTF-8 une extension "texte" et les fichiers Latin-1 "txt".

AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text

Enfin, envisagez d'enregistrer vos documents avec les fins de ligne Unix, et non les anciennes versions de lignes DOS ou Mac (classiques), ce qui n'aide pas et peut faire mal, surtout à mesure que nous nous éloignons de ces anciens systèmes. Un document HTML avec HTML5 valide, l'encodage UTF-8 et les terminaisons de ligne Unix est un travail bien fait. Vous pouvez partager et modifier et stocker et lire et récupérer et s'appuyer sur ce document dans de nombreux contextes. C'est la lingua franca. C'est du papier numérique.


78
2017-08-20 20:26



<meta charset="utf-8">a été introduit avec / pour HTML5.

Comme mentionné dans la documentation, les deux sont valides. cependant, <meta charset="utf-8"> est seulement pour HTML5 (et plus facile à taper / se souvenir).

En temps voulu, l'ancien style est voué à devenir obsolète dans le futur proche. Je m'en tiens à la nouvelle <meta charset="utf-8">.

Il n'y a qu'un seul moyen, mais en haut. Dans le cas de la technologie, c'est l'abandon de l'ancien (vraiment, vraiment rapide)

Documentation:  Méta charset HTML Attribut-W3Schools


28
2018-06-25 21:04



Sans contester les autres réponses, je pense que ce qui suit mérite d'être mentionné.

  1. Le long" (http-equiv) et la notation «courte» sont égales, selon la première des deux victoires;
  2. Les en-têtes de serveur Web remplacent tous les <meta> Mots clés;
  3. La nomenclature (marque d'ordre des octets) remplacera tout, et dans de nombreux cas, il affectera html 4 (et probablement d'autres choses, aussi);
  4. Si vous ne déclarez aucun encodage, vous obtiendrez probablement votre texte dans "l'encodage de texte de secours" qui est défini dans votre navigateur. Ni dans Firefox ni dans Chrome, c'est utf-8;
  5. En l'absence d'autres indices, le navigateur va essayer de lire votre document comme s'il était en ASCII pour obtenir l'encodage, donc vous ne pouvez pas utiliser d'encodages bizarres (utf-16 avec BOM devrait faire, cependant);
  6. Alors que les spécifications indiquent que la déclaration d'encodage doit être dans les 512 premiers octets du document, la plupart des navigateurs essaieront de lire plus que cela.

Vous pouvez tester en exécutant echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\xbb\xbf<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="windows-1251"><title>привет</title></head><body>привет</body></html>' | nc -lp 4500 et en pointant votre navigateur sur localhost:4500. (Bien sûr, vous voudrez changer ou enlever des pièces. \xef\xbb\xbf. Méfiez-vous de l'encodage de votre shell.)

S'il vous plaît, gardez à l'esprit qu'il est très important que vous déclariez explicitement l'encodage. Laisser les navigateurs deviner peut entraîner des problèmes de sécurité.


18
2018-01-15 00:03



Utilisation <meta charset="utf-8" /> pour les navigateurs Web lors de l'utilisation de HTML5.

Utilisation <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> lors de l'utilisation de HTML4 ou XHTML, ou pour les analyseurs DOM obsolètes, comme DOMDocument en php


9
2017-11-26 08:08



Il y a quelques nouvelles basées sur Fondation Mozilla, et sitepoint

N'utilisez pas cette valeur (http-equiv=content-type) comme il est obsolète.   Préférez le charset attribut sur le <meta> élément.    enter image description here


0
2017-08-15 23:22