当我使用JavaScript设置HTML页面的标题时,我看到了一些奇怪的行为.如果我直接在标题中插入html字符引用,则Unicode呈现正确,例如:
<title>吧出</title>
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试通过JavaScript使用html字符引用,似乎有些东西将&转换为(&)(将它们分开,因此SO不会将其转回到&符号),从而打破编码,导致它成为呈现为完整的编码字符串:
function execTitleChange() {
document.title = "吧出";
}
Run Code Online (Sandbox Code Playgroud)
(我应该注意这是一个小小的猜测;当我在执行这个JavaScript函数后使用Firebug对DOM进行内省时,我在那里看到&而不是&.)
如果我在从JavaScript设置值时使用\ u编码的Unicode字符,那么一切都可以正常工作:
function execTitleChange() {
document.title = "\u5427\u51fa";
}
Run Code Online (Sandbox Code Playgroud)
因为我认为JavaScript代表Unicode字符的方式,所以\ u编码字符对我有用是有意义的,但我很难理解为什么在使用html字符引用时行为会有所不同.