如何使用JavaScript在HTML标题中正确插入unicode?

如何使用JavaScript在HTML标题中正确插入unicode?,javascript,html,unicode,Javascript,Html,Unicode,当我使用JavaScript设置HTML页面的标题时,我看到一些奇怪的行为。如果我将html字符引用直接插入到Unicode正确呈现的标题中,例如: <title>&#21543;&#20986;</title> (我应该注意,这是一点推测;当我在执行此JavaScript函数后使用Firebug反省DOM时,我看到的是&而不是&。) 如果在设置JavaScript中的值时使用\u编码的Unicode字符,则一切都会再次正常工作: function ex

当我使用JavaScript设置HTML页面的标题时,我看到一些奇怪的行为。如果我将html字符引用直接插入到Unicode正确呈现的标题中,例如:

<title>&#21543;&#20986;</title>
(我应该注意,这是一点推测;当我在执行此JavaScript函数后使用Firebug反省DOM时,我看到的是&而不是&。)

如果在设置JavaScript中的值时使用\u编码的Unicode字符,则一切都会再次正常工作:

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

u编码字符工作的事实对我来说是有意义的,因为我认为JavaScript就是这样表示Unicode字符的,但我不明白为什么在使用html字符引用时行为会有所不同。

JavaScript字符串常量由JavaScript解析器解析。HTML标记中的文本由HTML解析器解析。这两种语言(以及它们的解析器)是不同的,特别是它们有不同的方式通过字符代码来表示字符

因此,您发现了现实的实际情况:-)在JavaScript中使用
\u
转义符号,在HTML/XML中使用HTML实体(
&

编辑-现在,当您谈论从JavaScript创建/插入HTML时,情况会变得更加混乱。当您使用
.innerHTML
从JavaScript更新DOM时,基本上就是将HTML源代码交给HTML解析器进行解释。因此,您可以使用JavaScript
\u
转义或HTML实体,一切都会正常工作(除了字符编码不匹配等令人痛苦的问题)


最后,请注意,JavaScript还提供了
String.fromCharCode()
函数来从数字字符代码构造字符串。

在JavaScript中使用Unicode字符的最佳方法是使用字符本身,使用编辑器或其他可以以UTF-8编码存储字符的工具。你会避免很多混乱。当然,您需要正确声明.js或.html文件的字符编码

结构
和#21543
在JavaScript中没有特殊意义;它只有八个Ascii字符。但是,如果您的JavaScript代码已经嵌入到HTML文档中,那么它将在传递给JavaScript解释器之前由HTML规则进行处理。而且规则因HTML版本而异。避免这种构造的另一个原因

那就写吧

document.title = "吧出";

(当然,很少有情况下您应该更改
title
元素内容,这对搜索引擎和JavaScript中的许多其他用途至关重要,而不是在HTML中进行设置。但这不是重点。)

这里有
document.title=“吧;”
,您应该有
document.title=“&;21543;…”
。您可能只需要将编码标题或
元字符集
与您的页面一起发送。我没有将整个HTML页面放入,但在标题中有设置。@arxanas否,HTML实体在这种情况下不起作用。完全有意义。事实上,您提醒我,我也在试验一个标签,设置标签的innerHTML确实有效,这也解释了。
document.title = "吧出";