将Unicode字符插入JavaScript


133

我需要在我的html页面上插入一个Omega(Ω)。我正在使用其HTML转义代码来执行此操作,因此我可以编写Ω并得到Ω。当我将其放入HTML元素时,一切都很好。但是,当我尝试将其放入JS中时,例如var Omega = Ω,它将该代码解析为JS,并且整个过程不起作用。有人知道该怎么做吗?


15
var Omega = "Ω";太简单?
Heretic Monkey”

6
记事本不接受,它只写了一个O:P
Bluefire,2012年

13
@MikeMcCaughan是的,但是如果其他开发人员弄乱了源文件的编码,那么您就迷路了……您总会说“噢,我不知道<软件的占位符>使用CP1250作为默认编码,我并没有注意到“提交时”或“字符编码-什么?”的微小变化?; =)
Samuel Rossille 2012年

3
@Bluefire切换到更好的文本编辑器,该编辑器支持设置字符编码(例如notepad ++)并将其设置为UTF-8。然后,如果需要,您可以在源代码中编写中文。或者停留在我的第一个评论所针对的ppl类别中; =)en.wikipedia.org/wiki/Character_encoding
塞缪尔·罗西耶

4
@ Bluefire,Notepad ++应该可以很好地处理它,您只需要将菜单中的Encoding更改为UTF-8或UCS-2。
Heretic Monkey”

Answers:


195

我猜您实际上想Omega成为包含大写欧米茄的字符串吗?在这种情况下,您可以编写:

var Omega = '\u03A9';

(因为Ω是代码点为U + 03A9的Unicode字符;即,03A9937,但用四个十六进制数字表示。)


4
如果要找出一个Unicode字符串的十六进制值是什么:mothereff.in/js-escapes
StanE

从JavaScript中派生Unicode字符串的十六进制值的另一种方法是:“Ω” .codePointAt(0).toString(16);
KostasX

53

尽管@ruakh给出了一个很好的答案,但我还是会添加一些替代方法以确保完整性:

实际上,您甚至可以var Omega = '&#937;'在JavaScript中使用它,但前提是您的JavaScript代码是:

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

在这些情况下,将首先由HTML解析器解析代码(在传递给JavaScript解释器之前),以便&#937;识别类似的字符引用。这些限制使得在大多数情况下这是一种不切实际的方法。

您也可以这样输入Ω字符,例如在中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数字,也可以使用这种方法。


18
现在时代已经改变了,五年后,人们在U+FFFF范围之外使用了这些叫做“表情符号”的东西。JavaScript也有,因此您可以执行此操作。var poop = '\u{1F4A9}';
不是用户的用户

1
@Userthatisnotauser 应该是可接受的答案!
Marten Koetsier '18 -4-12

如何使用JavaScript中的一个代码“ 0x1F512”插入“打开锁”字符“ \ uD83D \ uDD13”?为什么我们需要两个代码才能插入一个字符?
tarekahf

5
@tarekahf这是有关Unicode的简短课程。UTF-16仅跨越Unicode点U + 0000到U + FFFF。然后Unicode增长,并发明了替代产品,因此UTF-16可以访问这些点。但JavaScript可以只是这样做,现在:var lock = '\u{1F512}'你得到这个:🔓
用户不是用户

4

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

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

不幸的是,显示UTF-8仍需要ASCII码的这些代码,但我仍在等待(因为已经有很多年了……),那一天UTF-8与ASCII相同,而ASCII只是对UTF-8的纪念。过去。


9
表情符号使这些代码更难输入!\u{1F641}=🙁
用户不是一个用户
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.