Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ECMAScript 5.1中的SourceCharacter_Javascript_Unicode - Fatal编程技术网

Javascript ECMAScript 5.1中的SourceCharacter

Javascript ECMAScript 5.1中的SourceCharacter,javascript,unicode,Javascript,Unicode,我正在读这本书,但在我看来,有一点并不十分清楚 在第6节-源文本中,规范声明了一个源字符,如下所示: SourceCharacter:: any Unicode code unit 然后它说: 在本文档的其余部分,短语“代码单位”和单词“字符”将用于表示16位无符号值,用于表示单个16位文本单位。短语“Unicode字符”将用于指由单个Unicode标量值表示的抽象语言或排版单位(可能长于16位,因此可能由多个代码单位表示) 我认为这句话有点模棱两可,因为有些人(最初是我)会认为唯一允

我正在读这本书,但在我看来,有一点并不十分清楚

在第6节-源文本中,规范声明了一个源字符,如下所示:

SourceCharacter::
    any Unicode code unit
然后它说:

在本文档的其余部分,短语“代码单位”和单词“字符”将用于表示16位无符号值,用于表示单个16位文本单位。短语“Unicode字符”将用于指由单个Unicode标量值表示的抽象语言或排版单位(可能长于16位,因此可能由多个代码单位表示)

我认为这句话有点模棱两可,因为有些人(最初是我)会认为唯一允许的字符是Unicode表中0-65535之间的字符


那么,句子是否含糊不清,或者只能使用0-65536之间的字符?

这是故意的,他们告诉您允许使用任何代码单元,然后说在定义源字符后,为了澄清,他们通常指代码单元而不是字符

注意,在UTF16中,代码单元与代码点不同

所有东西都是一个16位的代码单元,但代码点可以由几个代码单元组成


例如“好问题。您可能知道,最初的JavaScript Unicode支持基本上被破坏了,因为它基于错误的假设,即UTF-16是一种固定大小的编码。我听说已经有了改进,但所有内容都需要向后兼容。我想问题是他们将“Unicode”和“代码单元”混为一谈“.Unicode将字符映射到数字,用于表示这些数字的字节数取决于编码。@欢迎使用。没有任何内容是混合的,也没有任何内容是不明确的。该上下文中的Unicode显式地是UTF16。请注意,文本以外的标识符必须是两个字节码点(这也是一个代码单元),但这并不是您真正要求的。因此,如果UTF-16可以使用代码单元表示每个unicode字符,那么说“任意unicode码点”和“任意unicode码单元”有什么区别?一些代码点需要几个代码单元-例如poop表情符号-这称为代理项对。UTF16很奇怪:DSo这是否意味着我不能使用0-65535范围以外的字符?我可以在JavaScript脚本中使用poop表情符号吗?