我需要在我的 html 页面上插入一个 Omega (Ω)。我正在使用它的 HTML 转义代码来执行此操作,因此我可以编写Ω
并获取 Ω。当我将它放入 HTML 元素时,一切都很好;但是,当我尝试将其放入我的 JS 中时,例如var Omega = Ω
,它会将代码解析为 JS 并且整个事情都不起作用。有人知道该怎么做吗?
4 回答
我猜你真的想Omega
成为一个包含大写欧米茄的字符串?在这种情况下,您可以编写:
var Omega = '\u03A9';
(因为 Ω 是带有代码点 U+03A9 的 Unicode 字符;也就是说,03A9
是937
,除了写成四个十六进制数字。)
尽管@ruakh 给出了一个很好的答案,但为了完整起见,我会添加一些替代方案:
实际上,您甚至可以var Omega = 'Ω'
在 JavaScript 中使用,但前提是您的 JavaScript 代码是:
- 在事件属性内,如在
onclick="var Omega = 'Ω'; alert(Omega)"
或 - 在以
script
XML 内容类型提供服务的 XHTML(或 XHTML + XML)文档内的元素中。
在这些情况下,代码将首先(在传递给 JavaScript 解释器之前)由 HTML 解析器解析,以便Ω
识别字符引用。在大多数情况下,这些限制使这成为一种不切实际的方法。
您也可以输入 Ω 字符,例如 in var Omega = 'Ω'
,但是字符编码必须允许,编码必须正确声明,并且您需要允许您输入此类字符的软件。如果您对所有内容都使用 UTF-8 编码并准备好处理由此产生的问题,那么这是一个干净的解决方案并且非常可行。源代码将是可读的,并且阅读它,您会立即看到字符本身,而不是代码符号。另一方面,如果其他人开始使用您的代码,可能会引起意外。
使用\u
符号,如var Omega = '\u03A9'
,独立于字符编码工作,实际上它几乎是通用的。然而,它只能用于 U+FFFF,即\uffff
,但大多数人听说过的大多数字符都属于该区域。(如果您需要“更高”的字符,则需要使用代理对或上述两种方法之一。)
您还可以使用该String.fromCharCode()
方法构造一个字符,将 Unicode 编号作为参数传递,以十进制形式如 invar Omega = String.fromCharCode(937)
或十六进制如 in var Omega = String.fromCharCode(0x3A9)
。这适用于 U+FFFF。即使变量中有 Unicode 编号,也可以使用此方法。
一种选择是将字符按字面意思放在脚本中,例如:
const omega = 'Ω';
这要求您让浏览器知道正确的源编码,请参阅JavaScript 中的 Unicode
但是,如果您不能或不想这样做(例如,因为字符太奇特并且不能期望在代码编辑器字体中可用),最安全的选择可能是使用新式字符串逃脱或String.fromCodePoint
:
const omega = '\u{3a9}';
// or:
const omega = String.fromCodePoint(0x3a9);
这不限于 UTF-16,而是适用于所有 unicode 代码点。相比之下,这里提到的其他方法有以下缺点:
- HTML 转义 (
const omega = 'Ω';
):仅在 HTML 元素中以非转义形式呈现时才有效 - 旧式字符串转义 (
const omega = '\u03A9';
):仅限于 UTF-16 String.fromCharCode
: 仅限于 UTF-16
答案是正确的,但您不需要声明变量。一个字符串可以包含你的字符:
"This string contains omega, that looks like this: \u03A9"
不幸的是,显示 UTF-8 仍然需要那些 ASCII 码,但我仍在等待(因为太多年了......)UTF-8 将与 ASCII 相同的那一天,而 ASCII 将只是对过去的。