web-dev-qa-db-fra.com

Entités HTML: quand utiliser Decimal vs Hex

Existe-t-il une bonne règle de base pour savoir quand utiliser la notation décimale vs hexadécimale pour les entités HTML?

Par exemple, un tiret insécable est écrit en décimal sous la forme ‑ et en hexadécimal comme ‑.

Cette réponse indique que l'hexadécimal est pour Unicode; cela signifie-t-il que hex devrait être utilisé si vous utilisez le <meta charset="utf-8"> balise dans le document <head>?

Parfois, je remarque des caractères d'entité rendus par erreur au lieu des entités qu'ils représentent - par exemple, &amp; apparaissant (au lieu d'une esperluette) dans une ligne d'objet d'e-mail ou un titre RSS. Est-ce soit hexadécimal ou décimal pour éviter cela?

Une dernière considération: l'utilisation de hexadécimal ou décimal peut-elle affecter la clarté de rendu (netteté) du caractère?

25
cantera

La règle de base est: utilisez celle que vous préférez, mais préférez hex. ☺

Il n'y a aucune différence de sens et aucune différence dans la prise en charge des navigateurs (les derniers navigateurs prenant en charge les références décimales ne sont morts que dans les années 1990).

Comme @AlexW le décrit, les références hexadécimales sont plus naturelles que décimales, en raison de la façon dont les normes de code de caractères sont écrites. Mais si vous trouvez les références décimales plus pratiques, utilisez-les.

Le problème n'a rien à voir avec les balises meta et les encodages de caractères. La principale raison pour laquelle les références de caractères ont été introduites dans HTML est qu'elles vous permettent de saisir des caractères tout à fait indépendamment de l'encodage du document. Cela inclut les caractères qui ne peuvent pas être écrits du tout directement dans l'encodage utilisé. Grâce à eux, vous pouvez saisir n'importe quel caractère Unicode même si l'encodage des caractères est ASCII ou un autre encodage limité, comme ISO-8859-1.

Dans le passé, il était courant de recommander l'utilisation de références nommées (ou "références d'entité" car elles sont formellement appelées en HTML classique), lorsque cela est possible, car une référence comme &Omega;, affiché littéralement pour l'utilisateur, est plus compréhensible qu'une référence comme &#x3A9; ou &#937;. Cela n'a pas été pertinent depuis plus d'une décennie, en ce qui concerne les navigateurs Web. Mais par exemple Les clients de messagerie peuvent être assez stupides ^ H ^ H ^ H ^ H ^ H ^ H ^ H ^ H ^ H sous-développés à cet égard. Ils pourraient par exemple afficher les références en tant que telles dans une liste de messages, même si elles peuvent les interpréter correctement lors de l'affichage d'un message. Mais il ne semble pas y avoir de comportement cohérent sur lequel vous pouvez compter.

28
Jukka K. Korpela

Global

HTML (et XML) propose trois façons de coder les caractères spéciaux: hex numérique &#x26;, décimal numérique &#38; (alias "références de caractères"), et nommé &amp; (alias "références d'entité"). Ils sont restés également valides et entièrement pris en charge par tous les principaux navigateurs pendant des décennies. Ils fonctionnent avec n'importe quel encodage, mais rendent toujours à partir de l'ensemble Unicode (qui est compatible avec ASCII, ISO Latin et Windows Latin, moins les codes 128-159).

Cela dépend donc de vos préférences personnelles, avec quelques points à noter.

Nécessité

Si vous ajoutez la balise charset meta appropriée à votre code HTML, vous n'avez pas du tout besoin de coder les caractères spéciaux (sauf & < > " ', ou plus généralement, juste & < en texte lâche). L'exception est de vouloir encoder un caractère non présent dans l'encodage spécifié. Mais si vous utilisez UTF-8, vous pouvez quand même représenter n'importe quoi à partir d'Unicode.

Brièveté

Pour tout caractère inférieur à l'index 10, la décimale est plus courte. Un onglet est &#9;, contre &#x09;, donc cela peut valoir la peine pour les balises pre contenant beaucoup de données TSV, par exemple.

Facilité d'utilisation

Les références nommées sont les plus faciles à utiliser et à mémoriser, en particulier pour le code partagé entre des développeurs d'horizons et de compétences différents. &lt; est beaucoup plus intuitif que &#x3c;. Quant aux commentaires de quelqu'un d'autre concernant la pertinence, ils sont en fait toujours entièrement pris en charge dans le cadre de la norme W3C, et ont même été développés pour HTML5.

Meilleur entrainement

L'utilisation de références nommées ou décimales n'est peut-être pas la meilleure pratique générale car les noms sont uniquement en anglais et uniques au HTML (même XML manque de références nommées, moins les "cinq grands"). La plupart des langages de programmation et des tables de caractères utilisent l'encodage hexadécimal, ce qui rend les choses plus faciles et plus portables à long terme lorsque vous restez cohérent. Bien que pour les petits projets ou les cas spéciaux, cela n'a pas vraiment d'importance.

Plus d'informations: http://xmlnews.org/docs/xml-basics.html#references

6
Beejor

Celles-ci sont appelées références de caractères numériques . Ils sont dérivés de SGML et leur partie numérique fait référence au point de code Unicode spécifique du caractère que vous essayez d'afficher. Ils vous permettent de représenter des caractères Unicode, même si le jeu de caractères particulier dans lequel vous avez écrit le code HTML n'a pas le caractère auquel vous faites référence. Que vous référençiez le point de code avec décimal ou hexidécimal n'a pas d'importance, sauf pour les très anciens navigateurs qui préfèrent décimal. La prise en charge hexadécimale a été ajoutée car les points de code Unicode sont référencés en notation hexadécimale et il est beaucoup plus facile de rechercher le point de code, puis d'ajouter la référence, sans avoir à convertir en décimal :

U+007D

=

&#x007D;

Pour répondre à ta question:

Cette réponse indique que l'hexadécimal est pour Unicode; cela signifie-t-il que l'hex devrait être utilisé si vous utilisez le <meta charset="utf-8"> tag dans le document?

Vous devez comprendre que UTF-8 est rétrocompatible avec ASCII/ISO-8859-1. Ainsi, les 256 premiers caractères de UTF-8 seront les mêmes dans ASCII et UTF-8. Hex est simplement plus facile pour UTF-8 car, en 2013, il y a 1 114 112 points de code Unicode. Il est donc plus facile d'écrire &#x110000; que d'écrire &#1114112; etc.

5
Alex W