于是其中两个字节取值范围选取前1024既D800 - DBFF,另外两个取值范围选剩下的既DC00 - DFFF,这两...
是因为以前设计的代码不够用了,所以才会增加D800~DFFF 这块,定义它们为“代理项”,通过高低代理项组合来表示不在 0~FFFF 这个区间内的代码位(字符定义)。在 Unicode 设计之初,委员会认为 0~FFFF 这 65536 个代码位足以应对地球上所有语言了,于是当时 Unicode 被设计为每个字符 16 位(两个 octe...
CodePoints U + D800 - U + DFFF是专门保留1与UTF-16一起使用。由于它们不在U + 10000 - U + 10FFFF的范围内,UTF-16不会使用代理对单独编码它们,因此它将是模糊的(和非法的2)对于这些单独的代码点以在UTF-16序列中出现未编码。 每件套Unicode.org utf-16常见问题解答: 1:问:什么是代理人? 答:代理...
代码位置0000D800到0000DFFF为UTF-16的应用保留(见附录C)。这些位置称为S-区。……附录C给出了具体...
如果您想要表示U+10000到U+10FFFF范围内的代码点,那么您必须使用代理项对,它位于U+D800到U+DFFF的...
因为这样设计了,就可以区分出 一个代码单元(两个字节)是 一个 码点(unicode 的每个字符对应的代码...
由于补充多语言平面的字符共有 个,而且在基本多文种平面内,我们预留出了一个空段(U+D800 到 U+DFFF )不映射任何字符,总共有 个,UTF-16 将补充多语言平面的 20 位拆成两半,前 10 位映射在空段中的 U+D800 到 U+DBFF(空间大小 ),称为高位,后10位映射在空段中的U+DC00 到 U+DFFF(空间大小 ),称...
0xD800U)); u16str.push_back((char16_t)((codePoint & 0x03FFU) | 0xDC00U)); } else { // 在UTF-16中 U+0000 到 U+D7FF 以及 U+E000 到 U+FFFF 与Unicode代码点值相同.// U+D800 到 U+DFFF 是无效字符, 为了简单起见,这里假设它不存在(如果有则不编码) u16str....
用16个位表示=>Unicode中“基本的多语言基本”——代码单元。(在基本的多语言基本中,从U+D800 ~ U+DFFF之间的区段是没有使用的。因此可以用这一区段的值累对辅助字符进行编码) 其他级别中,辅助字符采用一对连续的代码单元进行编码(16*2)。这样构成的编码值一定落入基本的多语言基本中空闲的2048字节内,称替代...
另外,需要特别注意的是,虽然Unicode标准规定BMP代理区(U+D800~U+DFFF)的码点值不对应于任何字符,即未作定义,但在UCS-2中,U+D800~U+DFFF是被定义了的,也就是已经用于某些字符了。不过,只要前后两个16位码元不是恰好构成了代理对,许多程序还是能把这些不匹配Unicode标准的字符码元正确地辨识、转换成合规的码元。