vs

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

  1. :

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

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
1404
demandé sur h0ussni 2011-01-15 01:06:47
la source

7 ответов

en HTML5, ils sont équivalents. Utilisez la plus courte, il est plus facile de se rappeler et de dactylographier. la prise en charge du navigateur est très bien car il a été conçu pour la compatibilité ascendante.

988
répondu Quentin 2012-03-23 11:14:28
la source

les deux formes de la déclaration meta charset sont équivalentes et doivent fonctionner de la même façon pour tous les navigateurs. Mais, il ya quelques choses que vous devez vous rappeler lorsque vous déclarez vos fichiers Web caractère-set comme UTF-8:

  1. Enregistrez votre fichier(s) dans l'encodage UTF-8 sans le marque d'ordre d'octet (BOM).
  2. déclarez l'encodage dans vos fichiers HTML en utilisant meta jeu de caractères (comme ci-dessus).
  3. de Votre serveur web doit servir vos fichiers, de déclarer l'encodage UTF-8 dans le Type de Contenu d'en-tête HTTP.

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

AddDefaultCharset UTF-8

cela configurera Apache pour servir vos fichiers déclarant L'encodage UTF-8 dans le En-tête de réponse Content-Type, mais vos fichiers doivent être sauvegardés dans UTF-8 (sans BOM) pour commencer.

Notepad ne peut pas enregistrer vos fichiers dans UTF-8 sans le BOM. Un éditeur libre qui peut est Notepad++ . Dans la barre de menu du programme, sélectionnez "Encoding > Encoding in UTF-8 without BOM". Vous pouvez également ouvrir des fichiers et les sauvegarder à nouveau dans UTF-8 en utilisant "Encoding > Convert to UTF-8 without BOM".

plus sur le Marque d'Ordre des octets (BOM) en Wikipedia .

236
répondu CodeBoy 2014-01-23 07:46:09
la source

une autre raison d'aller avec la courte est qu'elle correspond à d'autres instances où vous pourriez spécifier un jeu de caractères dans markup. 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.

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

Aussi, il n'y a absolument aucune raison de utilisez toute valeur autre que UTF-8 dans l'attribut meta charset ou l'en-tête de page. UTF-8 est le codage par défaut pour les documents Web depuis HTML4 en 1999 et le seul moyen pratique de faire des pages web modernes.

vous ne devez pas utiliser les entités HTML dans UTF-8. Les caractères comme le symbole du droit d'auteur doivent être tapés directement. Les seules entités que vous devez utiliser sont pour les 5 caractères markup réservés: moins que, plus grand que, ampersand, prime, double prime. Les entités ont besoin D'un analyseur HTML, que vous ne voudrez peut-être pas toujours utiliser à l'avenir, ils introduisent des erreurs, rendent votre code moins lisible, augmentent la taille de vos fichiers, et parfois décoder incorrectement dans divers navigateurs selon les entités que vous avez utilisées. Apprenez à taper / insérer des droits d'auteur, des marques de commerce, des guillemets ouverts, des guillemets fermés, des apostrophes, des tiret em, des tiret en, des puces, des euros, et tout autre caractère que vous rencontrez dans votre contenu, et utilisez ces caractères réels dans votre code. Le Mac a un lecteur de caractères que vous pouvez activer dans le La préférence du système de clavier, et vous pouvez trouver puis faire glisser-déposer les caractères dont vous avez besoin, ou utiliser le visualiseur de clavier correspondant pour voir quelles touches taper. Par exemple, trademark est L'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 tiret em. Ce n'est pas une mauvaise idée d'apprendre aussi les règles de ponctuation et de typographie ... par exemple, savoir qu'une période va à l'intérieur d'une citation étroite, pas à l'extérieur.

L'utilisation D'une étiquette pour quelque chose comme le contenu-type et l'encodage est très ironique, puisque sans savoir ces choses, vous ne pouviez 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, soit UTF-8 ou ISO-8859-1. Puisque US-ASCII est un sous-ensemble de la fois ISO-8859-1 et UTF-8, le navigateur peut lire juste bien de toute façon ... c'est la même chose. Lorsque le navigateur rencontre la balise meta charset, si l'encodage est différent de ce que le navigateur utilise déjà, le navigateur télécharge la page dans l'encodage spécifié. C'est pourquoi nous avons placé 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 des caractères UTF-8 dans votre titre.

vous devez enregistrer votre(S) fichier (s) dans l'encodage UTF-8 sans BOM

ce n'est pas strictement vrai. Si vous n'avez que les caractères US-ASCII dans votre document, vous pouvez le sauvegarder en 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 sauvegarder en UTF-8 sans BOM.

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

sur le Mac, utilisez Bare Bones TextWrangler (gratuit) de Mac App Store, ou Bare Bones BBEdit qui est à Mac App Store pour 39,99$... très bon marché pour un excellent outil. Dans l'une ou l'autre application, il y a un menu en bas de la fenêtre du document où vous spécifiez l'encodage 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, qui est recommandé, à la fois [meta les étiquettes] 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 de sorte que la page puisse être sauvegardée par l'utilisateur, à partir du navigateur sur le stockage local, puis de nouveau 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 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, avec tous les actifs en place et ainsi de suite, sans liens rompus.

AddDefaultCharset UTF-8

ou vous pouvez simplement changer l'encodage de types de fichiers particuliers comme so:

AddType text/html;charset=utf-8 html

une astuce pour servir les fichiers UTF-8 et Latin-1 (ISO-8859-1) est de donner aux fichiers UTF-8 une extension" text" et en Latin-1. les fichiers "txt."

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

enfin, pensez à sauvegarder vos documents avec les terminaisons de ligne Unix, pas avec les terminaisons de ligne DOS ou Mac (classic), ce qui n'aide pas et peut faire mal, surtout en bas de la ligne, car nous nous éloignons de plus en plus de ces anciens systèmes. Un document HTML avec des terminaisons de ligne html5, UTF-8 et Unix valides est un travail bien fait. Vous pouvez partager et éditer et stocker et lire et récupérer et vous appuyer sur ce document dans de nombreux contextes. Il lingua franca. C'est du papier numérique.

79
répondu Simon White 2013-03-05 15:41:25
la source

<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 lié à devenir déprécié dans un avenir proche. Je m'en tiendrais au nouveau <meta charset="utf-8"> .



il n'y a que une façon, mais en hausse. Dans le cas de tech, c'est l'élimination progressive de l'ancien (vraiment, vraiment rapide)

Documentation: HTML meta charset attribut-W3Schools

29
répondu Omar 2017-08-23 07:35:18
la source

bien que je ne conteste pas les autres réponses, je pense que ce qui suit est digne de mention.

  1. la notation "long" ( http-equiv ) et la notation "short" sont égales, quelle que soit la première victoire;
  2. les en-têtes du serveur web supplanteront toutes les balises <meta> ;
  3. BOM (Byte order mark) remplacer tout , et dans de nombreux cas, il aura une incidence sur html 4 (et probablement d'autres trucs aussi);
  4. si vous ne déclarez aucun encodage, vous obtiendrez probablement votre texte dans" fallback text encoding " qui est défini par votre navigateur. Ni dans Firefox ni dans Chrome c'est utf-8;
  5. en l'absence d'autres indices, le navigateur tentera de lire votre document comme S'il était en ASCII pour obtenir l'encodage, de sorte que vous ne pouvez pas utiliser des encodages bizarres (utf-16 avec BOM devrait faire, cependant);
  6. alors que les spécifications disent que la déclaration de codage doit être dans les 512 premiers octets du document, la plupart des navigateurs vont essayer de lire plus que cela.

vous pouvez tester en lançant 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 à localhost:4500 . (Bien sûr, vous voudrez changer ou enlever des pièces. La partie BOM est \xef\xbb\xbf . Méfiez-vous de l'encodage de votre shell.)

veuillez noter qu'il est très important que vous déclariez explicitement l'encodage. Laisser les navigateurs deviner peut conduire à des problèmes de sécurité.

17
répondu squirrel 2016-10-14 20:07:37
la source

utilisez <meta charset="utf-8" /> pour les navigateurs Web lorsque vous utilisez HTML5.

utilisez <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> lorsque vous utilisez HTML4 ou XHTML, ou pour des logiciels dom périmés, comme DOMDocument en php

10
répondu Timo Huovinen 2015-11-26 11:08:31
la source

Il y a quelques nouvelles fondées sur des de la Fondation Mozilla , et sitepoint

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

0
répondu user10089632 2018-02-26 19:51:11
la source

Autres questions sur html5 doctype meta-tags