我正在阅读ECMAScript规范第5版,但在我看来,这一点还不太清楚。
在第6节-源文本中,规范声明了一个源字符如下:
SourceCharacter::
any Unicode code unit
在上面写到:
在本文档的其余部分中,“代码单元”和“字符”一词将用于指用于表示单个16位文本单元的16位无符号值。短语"Unicode字符“将用于指由单个Unicode标量值表示的抽象语言或印刷单元(该值可能大于16位,因此可以由多个代码单元表示)。
我认为这句话有点模棱两可,因为有人(像我最初一样)可以认为唯一允许的字符是Unicode表的0-65535之间的字符。
那么,这个句子是模棱两可还是只能使用0-65536之间的字符呢?
发布于 2016-05-03 12:31:42
这是有意的,他们告诉您,任何代码单元都是允许的,然后说,为了澄清源字符的定义,它们通常是指代码单元而不是字符。
注意,在UTF16中,代码单元与代码点不同。
所有东西都是一个16位的代码单元,但是代码点可以由多个代码单元组成。
例如,"“是一个UTF16代码点,但它是两个代码单元。
"".charCodeAt(0) // 55357
"".charCodeAt(1) // 56589
https://stackoverflow.com/questions/37004033
复制相似问题