版本:http://www.ecma-international.org/ecma-262/8.0/index.html
UTF-16编码的unicode规则
原文
- A code unit in the range 0 to 0xD7FF or in the range 0xE000 to 0xFFFF is interpreted as a code point with the same value.
- A sequence of two code units, where the first code unit c1 is in the range 0xD800 to 0xDBFF and the second code unit c2 is in the range 0xDC00 to 0xDFFF, is a surrogate pair and is interpreted as a code point with the value (c1 - 0xD800) × 0x400 + (c2 - 0xDC00) + 0x10000. (See 10.1.2)
- A code unit that is in the range 0xD800 to 0xDFFF, but is not part of a surrogate pair, is interpreted as a code point with the same value.
unicode编码资料
简单解释一下
- unicode是编码,一个字符的unicode编码是确定的,但是在实际存储和传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同,这就是UTF。
- BMP:一个Unicode平面(码位从U+0000至U+FFFF)包含了最常用的字符。该平面被称为基本多语言平面,缩写为BMP。
- 从U+D800到U+DFFF之间的码位区块是永久保留不映射到Unicode字符。UTF-16就利用保留下来的0xD800-0xDFFF区段的码位来对辅助平面的字符的码位进行编码。
- 如果是一个代理对表示一个字符,c1需要在0xD800至0xDBFF之间,c2需要在0xDC00到0xDFFF,计算规则是 (c1 - 0xD800) × 0x400 + (c2 - 0xDC00) + 0x10000
- 如果不构成代理对,单个code unit在0xD800-0xDFFF之间是没有意义的。
对象
- 对象的key值只能是字符串或symbol,所有的字符串或symbol作为key都是合法的,包括空字符串。
- 普通对象中数字索引会转成字符串,但是数组中是int类型。
- get、set方法。 // TODO