2010-10-11 4 views
0

Je suis un peu coincé, étant donné que ma page inclut un JavaScript externe qui utilise document.write. Le problème est que ma page est codée en UTF-8, et les contenus écrits sont encodés en latin-1, ce qui provoque des problèmes d'affichage.Le javascript externe écrit en latin-1

Y at-il un moyen de gérer cela?

+0

Quel est votre DOCTYPE? En d'autres termes, comment déclarez-vous que votre page est UTF-8? – Pointy

+0

il n'y a pas de balise meta qui définit l'encodage de la page, mais firefox m'indique que la page est codée en UTF8 ... quand je passe à ISO-8859-1, les caractères étranges du footer (générés par le javascript externe) disparaissent. – Rolf

Répondre

1

Je dois avouer ne jamais avoir eu de mélanger encodages, mais en théorie, vous devriez être en mesure de préciser l'attribut charset (link) sur l'étiquette script   — mais assurez-vous que vous n'êtes pas en conflit avec elle au moment de servir l'extérieur fichier. A partir de ce lien:

L'attribut charset donne le codage des caractères de la ressource de script externe ... sa valeur doit être un nom de codage de caractères valide, doit être une correspondance insensible à la casse ASCII du nom MIME préféré pour cette encodage, et doit correspondre à l'encodage donné dans le paramètre charset des métadonnées Content-Type du fichier externe, le cas échéant.

Donc, ça va dire au navigateur comment interpréter les données de script, à condition que votre serveur fournit la même charset (ou ne fournit pas de charset) dans le moment de servir le fichier de script-tête Content-Type. Une fois que le navigateur lit le script avec le bon jeu de caractères, cela devrait fonctionner, car au moment où JavaScript traite les chaînes, elles sont en UTF-16 (selon la section 8.4 de the 5th edition spec).

+0

Je ne suis pas sûr que cela fonctionne partout; Par exemple, Chrome semble ne porter attention qu'à une déclaration d'encodage dans une balise '' '' dans la tête, ou (peut-être) dans le DOCTYPE. – Pointy

+0

@Pointy: la balise '' du document HTML contrôlera le jeu de caractères du document. Chrome * doit * respecter le 'charset' de la ressource de script externe. Mais comme je l'ai dit, je n'ai jamais vraiment eu à mélanger des jeux de caractères comme celui-ci, en citant simplement ce que les spécifications nous disent. :-) Le monde réel peut bien varier. (Je suis vraiment impatient de l'essayer maintenant, mais je n'ai tout simplement pas le temps aujourd'hui.) –

+0

Oui, je ne suis pas très sûr à ce sujet non plus. Je préférerais que 'document.write' n'existe pas du tout, pour ceci et bien d'autres raisons. – Pointy

Questions connexes