我需要在我的html页面上插入Omega(Ω)。我正在使用其HTML转义代码来执行此操作,因此我可以编写Ω
并获取Ω。当我将它放入HTML元素时,这一切都很好;但是,当我试图将它放入我的JS时,例如var Omega = Ω
,它将该代码解析为JS,整个过程不起作用。有谁知道如何解决这个问题?
答案 0 :(得分:169)
我猜你确实希望Omega
成为包含大写omega的字符串?在这种情况下,您可以写:
var Omega = '\u03A9';
(因为Ω是the Unicode character with codepoint U+03A9;也就是说,03A9
是937
,除了写成四个十六进制数字。)
答案 1 :(得分:45)
虽然@ruakh给出了一个很好的答案,但我会为完整性添加一些替代方案:
您实际上可以在JavaScript中使用var Omega = 'Ω'
,但前提是您的JavaScript代码是:
onclick="var Omega = 'Ω';
alert(Omega)"
或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代码点。相比之下,此处提到的其他方法具有以下缺点:
const omega = 'Ω';
):仅当在HTML元素中未转义呈现时起作用const omega = '\u03A9';
):仅限于UTF-16 String.fromCharCode
:仅限于UTF-16