Certains caractères UTF-8 ne se présentent pas sur le navigateur
Certains caractères UTF-8 comme l'UTF-8 est l'équivalent de C2 96 (trait d'union). Le navigateur, il s'affiche sous la forme (utf boîte avec 00 96). Et non pas comme le " - " (trait d'union). Les raisons de ce comportement? Comment pouvons-nous corriger cette?
http://stuffofinterest.com/misc/utf8.php?s=128 (Reportez-vous sur cette URL pour les codes)
J'ai trouvé que ce peut être manipulé avec des entités html. Est-il possible d'afficher ce sans avoir à les convertir en entités html?
OriginalL'auteur Krishna | 2009-09-09
Vous devez vous connecter pour publier un commentaire.
Je suppose que c'est parce que les personnages entre U+0080 et U+009F inclusive sont des caractères de contrôle. Je suis toujours un peu surpris de constater qu'ils montrent différemment lorsqu'ils sont encodés directement dans le code HTML que l'utilisation d'entités, mais, fondamentalement, vous ne devriez pas les utiliser pour commencer. U+0096 n'est pas vraiment "trait d'union", c'est le "début de la zone protégée".
Voir le U+0080-U+00FF code graphique pour plus d'informations. En gros, essayez d'éviter les caractères de contrôle...
La façon dont vous souhaitez gérer cela dépendra de la demande. Vous pouvez dépouiller les caractères, ou les remplacer par un autre caractère Unicode avec les mêmes caractéristiques d'affichage (par exemple, utiliser le bon caractère de trait d'union).
OriginalL'auteur Jon Skeet
Le caractère que vous êtes en train de parler d'un tiret demi-cadratin, pas un trait d'union. Son point de code Unicode U+2013, et de son encodage UTF-8 est
E2 80 93
, pasC2 96
. Cette table vous lien est incorrect. Les deux premières colonnes n'ont rien à voir avec UCS-2 ou Unicode; ils contiennent les windows-1252 encodages de caractères en question. Les colonnes intitulées "UTF-8 Hex" et "UTF-8 Natives" sont tout simplement faux, au moins pour les lignes marquées 128 à 159. Les entités–
et–
représentent un tiret demi-cadratin, mais l'UTF-8 séquenceC2 96
représente un non-affichables caractère de contrôle.Vous ne devriez pas avoir besoin de coder les caractères manuellement de toute façon. Dites simplement à votre éditeur de texte (ou ce que vous utilisez pour créer le contenu) pour enregistrer le fichier en UTF-8.
Non, l'entité
–
ne représentent un tiret demi-cadratin. Il est basé sur windows-1252 et est donc techniquement incorrect, mais les navigateurs prennent en charge pour des raisons historiques. La bonne entité numérique pour le tiret demi-cadratin, basé sur son point de code Unicode, est–
ou–
hex....ou
–
...Alan, je suis complètement déconcertés par votre commentaire "techniquement incorrect, mais les navigateurs prennent en charge pour des raisons historiques." Combien de mauvais mappages sont là dans les codes numériques pour les entités HTML? Que faire si je voulais démarrer une, euh, de l'espace surveillé en HTML... eh bien, jamais l'esprit. Mais, je vous en serais reconnaissant si vous pouviez m'indiquer une liste de ces choses. Si vous pouvez affirmer qu'il y a une liste, je vais ouvrir une question à poser où il est.
Je ne sais pas si il y a une liste exhaustive, mais jetez un oeil à table. Tous les caractères dans le
U+0080..U+009F
gamme sont décrits comme des caractères de contrôle, de sorte que le "Navigateur" de la colonne doit être vide pour ces lignes. Au lieu de cela, vous voyez caractères affichables commeƒ
et‰
, même si la page est servi en tant que UTF-8. Si vous affichez le code source de la page, vous verrez que c'est parce que les personnages sont écrites sous la forme d'entités numériques (ƒ
,‰
).OriginalL'auteur Alan Moore
Deux raisons viennent à l'esprit:
OriginalL'auteur Vilx-