Comment puis-je insérer correctement l'unicode dans un titre HTML à l'aide de JavaScript?

J'en vois certains comportement bizarre quand je suis définir le titre d'une page HTML à l'aide de JavaScript. Si je insérer du code html de références directement dans le titre de l'Unicode s'affiche correctement, par exemple:

<title>&#21543;&#20986;</title>

Mais si je tente d'utiliser les caractères html références via JavaScript, quelque chose qui semble être de la conversion de la & (& amp 😉 (les séparant ainsi DONC, ne fait pas que tourner de nouveau dans esperluette) et donc la rupture de l'encodage, l'amenant à être rendu complet de la chaîne codée:

function execTitleChange() {
  document.title = "&#21543;&#20986;";
}

(Je tiens à noter que c'est un peu de la spéculation; quand je connaître les DOM à l'aide de Firebug après l'exécution de cette fonction JavaScript, c'est là que je vois le & au lieu de &.)

Si j'utilise \u des caractères Unicode codés lors de la définition de la valeur à partir de JavaScript, tout fonctionne à nouveau correctement:

function execTitleChange() {
  document.title = "\u5427\u51fa";
}

Le fait que \u caractères codés de travail type de sens pour moi, car je pense que c'est la façon JavaScript représente des caractères Unicode, mais je suis perplexe quant à pourquoi le comportement serait différent lors de l'utilisation de caractères html références.

Lorsque vous avez document.title = "&#21543; ...";, vous devriez avoir document.title = "&amp;21543; ...". Vous devriez probablement juste envoyer des têtes d'encodage ou un meta charset avec votre page.
Je n'ai pas mis la totalité de la page HTML, mais j'ai <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> dans l'en-tête.
non, les entités HTML ne fonctionne pas dans ce cas.

OriginalL'auteur BenG | 2012-08-24