无法渲染js unicode字符`\ u1F310`

时间:2016-05-17 09:53:55

标签: javascript unicode character-encoding unicode-escapes unicode-literals

例如正确呈现的欧米茄符号'\u03A9',但是地球符号'\u1F310' http://www.fileformat.info/info/unicode/char/1f310/index.htm - 不是。在控制台和节点环境中尝试过

2 个答案:

答案 0 :(得分:2)

'\u1F310'

JavaScript \u转义只占四位数,所以这个字符串文字是两个代码单元,U + 1F31(带有Dasia的希腊小写字母)和U + 0030(数字零):ἱ0。< / p>

JavaScript字符串由16位宽的代码单元组成,因此JavaScript中最高的单个代码单元为\uFFFF,并且位于基本多语言平面之外的U + 10000以上字符无法直接引用。要获得它们,您必须使用一对UTF-16 surrogates。对于U + 1F310,其效果为'\uD83C\uDF10'

在ECMAScript 2015中,有一个新的字符串转义表单,其中包含字符编号并为您完成剩下的工作:'\u{1F310}'。在最近的Node版本中,这是available,但在支持在浏览器中普及之前还需要一段时间。

将角色打印到控制台是一项单独的挑战。正如@MarcoS所说,您需要将终端设置为使用具有字形的字体。您还需要使用能够理解非ASCII,特别是非Basic-Multilingual-Plane字符的控制台。 (如果你在Windows命令提示符下,赢取该游戏的唯一方法就是不玩。)

答案 1 :(得分:1)

只有一些字体支持地球符号'\u1F310' ...
其中一些是:

  • LastResort
  • Quivira
  • Segoe UI Emoji
  • Segoe UI符号
  • 使用symbolA
  • Unifont Upper CSUR

请参阅fontsupport