将Unicode字符插入JavaScript

时间:2012-10-26 19:22:45

标签: javascript html unicode

我需要在我的html页面上插入Omega(Ω)。我正在使用其HTML转义代码来执行此操作,因此我可以编写Ω并获取Ω。当我将它放入HTML元素时,这一切都很好;但是,当我试图将它放入我的JS时,例如var Omega = Ω,它将该代码解析为JS,整个过程不起作用。有谁知道如何解决这个问题?

4 个答案:

答案 0 :(得分:169)

我猜你确实希望Omega成为包含大写omega的字符串?在这种情况下,您可以写:

var Omega = '\u03A9';

(因为Ω是the Unicode character with codepoint U+03A9;也就是说,03A9937,除了写成四个十六进制数字。)

答案 1 :(得分:45)

虽然@ruakh给出了一个很好的答案,但我会为完整性添加一些替代方案:

您实际上可以在JavaScript中使用var Omega = 'Ω',但前提是您的JavaScript代码是:

  • 在事件属性中,如onclick="var Omega = '&#937'; alert(Omega)"
  • 在XHTML(或XHTML + XML)文档中的script元素中 提供XML内容类型。

在这些情况下,代码将首先(在传递给JavaScript解释器之前)由HTML解析器解析,以便识别像Ω这样的字符引用。在大多数情况下,这些限制使得这种做法变得不切实际。

您也可以输入Ω字符,如var Omega = 'Ω'中所示,但是字符编码必须允许,必须正确声明编码,并且您需要可以输入此类字符的软件。这是一个干净的解决方案,如果您对所有内容使用UTF-8编码并且准备好处理它所创建的问题,这是非常可行的。源代码是可读的,读取它,你立即看到字符本身,而不是代码符号。另一方面,如果其他人开始使用您的代码,可能会引起意外。

\u中使用var Omega = '\u03A9'表示法,与字符编码无关,实际上它几乎是通用的。然而,它可以如此使用直到U + FFFF,即高达\uffff,但大多数人听说过的大多数字符落入该区域。 (如果您需要“更高”字符,则需要使用代理对或上述两种方法之一。)

您还可以使用String.fromCharCode()方法构造一个字符,将Unicode编号作为参数传递,如var Omega = String.fromCharCode(937)中的十进制或var Omega = String.fromCharCode(0x3A9)中的十六进制传递。这适用于U + FFFF。即使您在变量中包含Unicode编号,也可以使用此方法。

答案 2 :(得分:4)

答案是正确的,但您不需要声明变量。 字符串可以包含您的角色:

"This string contains omega, that looks like this: \u03A9"

不幸的是,显示UTF-8仍然需要那些ASCII码,但是我还在等待(因为太多年......)UTF-8与ASCII相同的那一天,而ASCII只是一个纪念过去。

答案 3 :(得分:3)

一种选择是将字符按原样放置在脚本中,例如:

const omega = 'Ω';

这要求您让浏览器知道正确的源编码,请参见Unicode in JavaScript

但是,如果您不能或不想这样做(例如,由于字符太奇异,并且不能期望代码编辑器字体中提供该字符),最安全的选择可能是使用new样式的字符串转义或String.fromCodePoint

const omega = '\u{3a9}';

// or:

const omega = String.fromCodePoint(0x3a9);

这不限于UTF-16,而是适用于所有unicode代码点。相比之下,此处提到的其他方法具有以下缺点:

  • HTML转义(const omega = '&#937';):仅当在HTML元素中未转义呈现时起作用
  • 旧样式的字符串转义符(const omega = '\u03A9';):仅限于UTF-16
  • String.fromCharCode:仅限于UTF-16