Les entités nommées en HTML sont-elles toujours nécessaires à l'ère des navigateurs compatibles Unicode ?

StackOverflow https://stackoverflow.com/questions/25132

Question

J'ai fait beaucoup de programmation PHP ces dernières années et une chose qui m'ennuie toujours est le faible support de l'Unicode et des chaînes multi-octets (bien sûr, il n'y en a pas nativement).Par exemple, "htmlentities" semble être une fonction très utilisée dans le monde PHP et j'ai trouvé cela absolument ennuyeux lorsque vous vous efforcez de garder chaque chaîne localisable, de stocker uniquement UTF-8 dans votre base de données, de livrer uniquement UTF. -8 pages Web, etc.Soudain, quelque part entre votre base de données et le navigateur, il y a cette fonction désespérément naïve qui prétend que chaque octet est un caractère et qui gâche tout.

je voudrais juste amour pour simplement supprimer ce genre de fonctions, elles semblent totalement superflues. Est-il encore nécessaire de nos jours d'écrire « ä » au lieu de « ä » ? Au moins, mon Firefox semble parfaitement heureux d'afficher même les glyphes asiatiques les plus étranges tant qu'ils sont servis dans un encodage approprié.

Mise à jour: Être plus précis:Les entités nommées sont-elles nécessaires pour autre chose que l'affichage de balises HTML (comme dans "<" pour "<")

Mise à jour 2 :

@Konrad :Êtes-vous en train de dire que non, les entités nommées ne sont pas nécessaires ?

@Ross :Mais ne serait-il pas préférable de nettoyer les entrées de l'utilisateur lors de leur saisie, pour que ma logique de sortie soit exempte de tels problèmes ?(en supposant bien sûr qu'une désinfection fiable en entrée soit possible - mais alors, si ce n'est pas le cas, peut-elle l'être en sortie ?)

Était-ce utile?

La solution

Entités nommées en XHTML « réel » (c.-à-d.avec application/xhtml+xml, plutôt que le plus fréquemment utilisé text/html mode de compatibilité) sont déconseillés.Mis à part les cinq définis dans XML lui-même (&lt;, &gt;, &amp;, &quot;, &apos;), ils devraient tous être définis dans la DTD du DocType particulier que vous utilisez.Cela signifie que votre navigateur doit explicitement prendre en charge ce DocType, ce qui est loin d'être acquis.Les entités numérotées, en revanche, ne nécessitent évidemment qu'une table de recherche pour obtenir le bon caractère Unicode.

Quant à savoir si vous avez vraiment besoin d'entités ces jours-ci :vous pouvez vous attendre à ce que n'importe quel navigateur moderne prenne en charge UTF-8.Par conséquent, tant que vous pouvez garantir que la base de données, le balisage et le serveur Web acceptent tous de servir cela, abandonnez les entités.

Autres conseils

Si vous utilisez XHTML, il est en fait recommandé de ne pas utiliser d'entités nommées ([citation nécessaire]).Certains navigateurs (Firefox…), lors de l'analyse en XML (ce qu'ils ne font normalement pas), ne lisent pas les fichiers DTD et sont donc incapables de gérer les entités.

Comme il est de toute façon préférable d'utiliser l'UTF-8 comme encodage s'il n'y a aucune raison impérieuse de procéder autrement, cela signifie seulement que le créateur des documents a besoin d'un éditeur décent qui peut non seulement gérer les documents, mais qui fournit également un bon moyen de saisie. les divers glyphes.OS X n'a ​​pas vraiment ce problème car les glyphes les plus nécessaires peuvent être atteints via les touches « alt », mais Windows n'a pas cette fonctionnalité.


@Konrad :Êtes-vous en train de dire que non, les entités nommées ne sont pas nécessaires ?

Précisément.À moins, bien sûr, qu'il n'y ait des restrictions stupides, par ex.pilotes de bases de données hérités qui s'étouffent avec UTF-8, etc.

Safari semble avoir des problèmes avec certains glyphes mais pas avec d'autres, ce n'est peut-être pas le cas nécessaire mais il est probablement préférable de le faire, bien sûr, ceci est mon opinion et n'est étayée par rien d'autre que mes propres observations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top