Cela me déroute depuis un certain temps. Avec l'avènement de l'UTF-8 en tant que norme de facto dans le développement Web, je ne sais pas dans quelles situations je suis censé utiliser les entités HTML et pour lesquelles dois-je simplement utiliser le caractère UTF-8. Par exemple,
&emdash;
)&
)¾
)Veuillez faire la lumière sur ce problème. Ce sera apprécié.
Vous n'avez généralement pas besoin d'utiliser des entités de caractères HTML si votre éditeur prend en charge Unicode. Les entités peuvent être utiles lorsque:
le code est plus clair que le caractère d'espace blanc correspondant.<
, &
, ou "
.Sur la base des commentaires que j'ai reçus, j'ai approfondi un peu la question. Il semble qu'actuellement la meilleure pratique consiste à renoncer à utiliser des entités HTML et à utiliser le caractère UTF-8 à la place . Les raisons énumérées sont les suivantes:
Tant que l'encodage de votre page est correctement défini sur UTF-8, vous devez utiliser le caractère réel au lieu d'une entité HTML. J'ai lu plusieurs documents sur ce sujet, mais les plus utiles étaient:
Extrait de l'article UTF-8: Le secret de l'encodage des caractères:
Wikipedia est une excellente étude de cas pour une application qui utilisait à l'origine ISO-8859-1 mais qui est passée à UTF-8 lorsqu'elle est devenue beaucoup trop lourde pour prendre en charge les langues étrangères. Les bots vont maintenant parcourir les articles et convertir les entités de caractères en leurs vrais personnages correspondants pour des raisons de convivialité et de recherche .
Cet article donne également un bel exemple de codage chinois. Voici l'exemple abrégé par souci de paresse:
UTF-8:
這兩個字是甚麼意思
Entités HTML :
這兩個字是甚麼意思
Les encodages d'entités UTF-8 et HTML sont tous deux dénués de sens pour moi, mais au moins l'encodage UTF-8 est reconnaissable comme une langue étrangère , et il rendre correctement dans une zone d'édition. L'article poursuit en disant ce qui suit à propos de la version HTML codée par entité:
Extrêmement gênant pour ceux d'entre nous qui savent réellement ce que sont les entités de caractère, totalement inintelligible pour les utilisateurs pauvres qui ne le savent pas! Même les entités de caractère un peu plus conviviales et "intelligibles" comme thêta; laissera les utilisateurs qui ne sont pas intéressés à apprendre HTML se gratter la tête. D'un autre côté, s'ils voient θ dans une zone d'édition, ils sauront qu'il s'agit d'un caractère spécial et le traiteront en conséquence, même s'ils ne savent pas comment écrire ce caractère eux-mêmes.
Comme d'autres l'ont noté, vous devez toujours utiliser des entités HTML pour les caractères XML réservés (esperluette, inférieur à, supérieur à).
Je n'utiliserais pas UTF-8 pour les personnages qui se confondent visuellement facilement. Par exemple, il est difficile de distinguer un emdash d'un moins, ou surtout un espace insécable d'un espace. Pour ces personnages, utilisez certainement des entités.
Pour les caractères faciles à comprendre visuellement (comme les exemples chinois ci-dessus), allez-y et utilisez UTF-8 si vous le souhaitez.
Personnellement, je fais tout dans utf-8 depuis longtemps, cependant, dans une page html, vous devez toujours convertir les esperluettes (), supérieures à (>) et inférieures à (<) en leurs entités équivalentes, amp ;, gt ; et lt;
De plus, si vous avez l'intention de faire de la programmation en utilisant du texte utf-8, il y a quelques éléments à surveiller.
Les entités HTML sont utiles lorsque vous souhaitez générer du contenu qui sera inclus (dynamiquement) dans des pages avec (plusieurs) encodages différents. Par exemple, nous avons du contenu en marque blanche qui est inclus à la fois dans les pages Web encodées ISO-8859-1 et UTF-8 ...
Si la conversion de jeux de caractères de/vers UTF-8 n'était pas un gros gâchis non fiable (vous tombez toujours sur certains personnages et certains outils qui ne se convertissent pas correctement), la normalisation sur UTF-8 serait la voie à suivre.
Les entités peuvent vous acheter une certaine compatibilité avec des clients dont le cerveau est mort et qui ne comprennent pas correctement les encodages. Je ne pense pas que cela inclue les navigateurs actuels, mais vous ne savez jamais quels autres types de programmes pourraient vous frapper.
Plus utile, cependant, est que les entités HTML vous protègent de vos propres erreurs: si vous configurez mal quelque chose sur le serveur et que vous finissez par servir une page avec un en-tête HTTP qui dit que c'est ISO-8859-1
et une balise META
qui indique que c'est UTF-8
, au moins votre mdash; es fonctionnera toujours.
Toutes les réponses précédentes ont du sens pour moi.
De plus: cela dépend principalement de l'éditeur que vous avez l'intention d'utiliser et de la langue du document. Au minimum, l'éditeur doit prendre en charge la langue du document. Cela signifie que si votre texte est en japonais, méfiez-vous de l'utilisation d'un éditeur qui ne les affiche pas (c'est-à-dire pas d'entités pour le document lui-même). Si son anglais, vous pouvez même utiliser un vieil éditeur de type vim et utiliser des entités uniquement pour la copie rarement relative; et amis. Bien sûr: gt; pour> et les autres spéciaux HTML ont encore besoin d'échappements. Mais même avec les autres langues latin-1 (allemand, français, etc.), l'écriture ä est pénible, vous savez où ...
De plus, j'écris personnellement des entités pour les caractères invisibles et ceux qui ressemblent à standard-ascii et sont donc facilement confondus. Par exemple, il y a u1173 (ressemblant à un tiret dans certains jeux de caractères) ou u1175, qui ressemble à la barre verticale. J'utiliserais des entités pour ceux de toute façon.
Si vos pages sont correctement encodées en utf-8, vous ne devriez pas avoir besoin d'entités html, utilisez simplement les caractères que vous voulez directement.