当我使用 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";
}
\u 编码字符的工作对我来说有点道理,因为我认为这就是 JavaScript 表示 Unicode 字符的方式,但我很难理解为什么在使用 html 字符引用时行为会有所不同。