25

J'ai quelques caractères chinois que j'essaie d'afficher sur un site web alimenté par Kentico. Ce texte est copié/collé dans l'éditeur Kenticos FCK, puis enregistré et affiché sur le site. Dans Firefox, Chrome et Safari, les caractères apparaissent exactement comme prévu. En mode IE 8 Standards, je ne vois que des cases.Pourquoi IE ne parvient-il pas à afficher du texte codé en UTF-8?

Le texte est codé en UTF-8 et, pour autant que je sache, il est correctement codé dans la réponse du serveur. Il y a un en-tête de réponse Content-Type: text/html; charset=utf-8 et un méta-tag <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> sur la page. Lorsque je télécharge le code HTML du serveur et compare les octets des caractères en question au document texte UTF-8 d'origine, les octets correspondent tous, sauf le code HTML n'inclut pas une nomenclature.

Ceci semble être spécifique à IE 8 en mode Standards. Dans IE 8 Quriks: ça marche. IE 7 Normes: ça marche. IE 7 Quirks: Travaux. Je ne suis pas sûr comment le mode standard causerait ce problème. Etrangement, si je regarde la source à partir d'Internet Explorer, les caractères apparaissent correctement dans la vue source.

Des suggestions sur ce qui pourrait ne pas être ici? Est-ce que je manque quelque chose d'évident?

+0

Nous avons eu un problème avec IE11 ne montrant pas les icônes UTF-8 parfois et j'ai trouvé cette question dans ma recherche d'une solution, mais mon problème a été causé par les en-têtes 'no-store' et' no-cache' cette [page de dépannage de Font Awesome] (https://github.com/FortAwesome/Font-Awesome/wiki/Troubleshooting#im-hosting-fonts-on-my-server-and-icons-dont-show-up). Juste au cas où quelqu'un d'autre se retrouve ici avec le même problème. –

Répondre

11

Je ne peux pas expliquer cela en détail. Mais c'est en effet un problème connu.

Voici un petit extrait de code reproductible:

<!DOCTYPE html> 
<html lang="en"> 
    <head><title>test</title></head> 
    <body><p>&#65185;<br>0 0</p></body> 
</html> 

Enregistrer dans UTF-8 et vue dans IE8. Tu ne vois rien. Remplacez 0 0 par 00 et rechargez la page. Ça va bien fonctionner! C'est absolument étonnant. Bizarrement, en remplaçant 0 0 par a a ou le <br> par un </p><p> le réparera aussi bien. Cela aura quelque chose à voir avec des échecs dans le rendu des espaces.

Désolé, je n'ai pas de ressources d'administration prouvant cela, mais c'est juste une autre preuve que IE8 n'est pas aussi bon que nous l'attendons. Votre meilleur pari est d'essayer de changer le HTML et/ou de le construire étape par étape afin qu'il fonctionne à un moment ou en vain, ajouter la méta balise suivante à la tête pour forcer IE8 en mode IE7:

+0

C'est dingue! Mais, forçant IE 7 mode de compatibilité fonctionne en effet du côté du public. Maintenant, je dois juste comprendre comment forcer le mode de compatibilité dans l'iframe de l'éditeur FCK afin que l'utilisateur puisse réellement éditer le texte. Merci pour l'info! – mrdrbob

+0

À la votre! Beaucoup de chance avec ce problème étrange. – BalusC

+1

Je viens de perdre 4 heures sur celui-ci pour arriver à une solution similaire (doh!). Plutôt que de régler le mode compat sur IE7 (IE9 est sorti), je l'ai simplement défini sur "IE = Edge", ce qui équivaut à dire "utilisez les dernières informations sur vous". Cela a semblé obliger IE9 à reconnaître le fait qu'il devrait être en UTF-8, le plus étrange mais ça marche. Ici pour référence si les autres l'obtiennent aussi. –

3

Juste une supposition sauvage, mais ce pourrait être un problème de police. Peut-être que les polices disponibles pour votre navigateur peuvent représenter les caractères chinois.

8

La valeur par défaut IE encodage est de l'Europe occidentale (ISO) de sorte que vous devez modifier manuellement en UTF-8 ou appliquer IE d'utiliser un encodage donné comme ceci:

  • HTML 4.01

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

  • HTML 5

    <meta charset="UTF-8">

Et vous devez également utiliser lang attribut dans <html> tag pour déclarer la langue

<html lang="zh"> 

pour Ch inese

+0

Cela fonctionne parfaitement! L'ajout de l'attribut language à la balise html a fait l'affaire. –

2

J'ai réussi à résoudre le même problème en changeant le format UTF du fichier à "UTF8 With Byte Order Mark".

(L'éditeur que j'utilise me permet de changer facilement de format de fichier, je ne sais pas comment procéder autrement, mais il vaut la peine de jeter un oeil aux différents formats de fichiers UTF, IE (8) n'aime pas UTF8 ...)

J'ai également été capable de reproduire l'extrait de la réponse ci-dessus;

<!DOCTYPE html> 
<html lang="en"> 
    <head><title>test</title></head> 
    <body><p>&#65185;<br>0 0</p></body> 
</html> 

Mais mes résultats étaient « intermittents », tandis que dans UTF-sans BOM (parfois des accents se présenteraient, d'autres fois les chars étranges, et il ne ressemblait pas à un problème de rendu des espaces pour moi ... Notez que je jouais avec lang = "fr" et lang = "es", mais dans tous les cas, la modification du format de fichier UTF semble avoir résolu définitivement mes problèmes d'affichage des accents. Je ne suis pas familier à 100% avec UTF, mais si les caractères sont codés en utilisant 2 octets, il faudrait supposer que les problèmes d'espace blanc et les caractères incompris pourraient être liés à des octets mal alignés dans les sources.