JavaScriptを使用してHTMLページのタイトルを設定しているときに、奇妙な動作が見られます。html文字参照をタイトルに直接挿入すると、Unicodeは正しくレンダリングされます。次に例を示します。
<title>吧出</title>
しかし、JavaScriptを介してhtml文字参照を使用しようとすると、何かが&を(&amp;)に変換しているように見えます(SOがアンパサンドに戻らないようにそれらを分離しているため)。完全にコード化された文字列としてレンダリング:
function execTitleChange() {
document.title = "吧出";
}
(これは少し推測であることに注意してください。このJavaScript関数を実行した後にFirebugを使用してDOMをイントロスペクトすると、&の代わりに&が表示されます。)
JavaScriptから値を設定するときに\uエンコードされたUnicode文字を使用すると、すべてが再び正しく機能します。
function execTitleChange() {
document.title = "\u5427\u51fa";
}
JavaScriptがUnicode文字を表す方法だと思うので、\ uエンコードされた文字が機能するという事実は私には理にかなっていますが、html文字参照を使用すると動作が異なる理由に困惑しています。