表格中第一列是Unicode编码的范围,第二列是 具体Unicode码的二进制 ( 第二行的第二列表示的是 Unicode 码 减去0x10000后的二进制 ) , 第三列是对应UTF-16编码方式,其中红色的二进制"1"和"0"是固定的前缀, 字母x和y表示可用编码的二进制位, 第四列表示 编码占用的字节数 前面提到过,"中"字的 Unicode ...
如果要用简单的一句话来概括,就是——所有大于0xFFFF的码点值(即增补平面码点编号,范围为0x10000~0x10FFFF,十进制为65536~1114111;注意,0xFFFF是十六位二进制数的最大值的十六进制表示)要编码成UTF-16编码方式的话,就必须使用代理机制(也就是用代理对来表示)。 2. 在UTF-16编码方式中,被合起来称为”代理对...
这个范围即基本多语言平面(Basic Multilingual Plane, BMP),包含了最常用的字符,包含的码位范围是 U+0000 到 U+FFFF,只需要一个16位的码元即可表示。U+10000 ~ U+10FFFF 其它平面(叫做辅助平面,Supplementary Planes)中的码位,在UTF-16中被编码为一对16位长的码元(即32bit,4Bytes),称作代理对(su...
1. 基本平面(码点范围U+0000-U+FFFF) 在基本多语言平面内的码位UTF-16编码使用1个码元且其值与Unicode是相等的(不需要转换)。举例如下: 2. 辅助平面(码点范围U+10000-U+10FFFF) 辅助平面的码点在UTF-16中被编码为一对双字节(16位)的码元(即32位,4字节),称作代理对(surrogate pair),编号范围:0xD800...
1.若U < 0x10000,字符的UTF-16编码就是U对应的16位二进制。 2.若U ≥ 0x10000,则把字符拆分为2部分(U+10000 ~ U+10FFFF的空间大小是2^20),前十位映射到U+D800U+DBFF,后十位映射到U+DC00U+DFFF。 具体拆分计算如下: 计算U'=U-0x10000, 将U'写成二进制形式:yyyy yyyy yyxx xxxx xxxx,然后将...
SP的UTF-16编码的两个16位二进制串: 第一个16位串的前六位固定是1101_10,结合yy的范围(00 - 11),即1101_1000 - 1101_1011,此范围即是代理对的高位的前两位0xD8 - 0xDB; 第二个16位串的前六位固定是1101_11,结合xx的范围00 - 11,即1101_1100 - 1101_1111,此范围即是代理对的低位的前两位的范围...
UTF-16对于辅助字符的码点进行编码,采用一对连续的代码单元,即32位表示。 那如何区别一个代码单元到底是码点为0x0000~0xFFFF的字符的代码单元,还是辅助字符中的两个代码单元之一呢? 其实在基本多语言平面中,有2048个值的范围并没有使用,这个范围是0xD800~0xDFFF,因此如果设定辅助字符的两个代码...
Unicode码采用16位编码世界字符其实还是有点捉襟见肘的。因此从 Unicode 3.1 版本开始,设立了16个辅助平面(相当于Unicode码又扩充了4位),使 Unicode 的可使用空间由六万多字增至约一百万字。用白话说就是增加了几个区段,比如原始版本的Unicode码的范围是0x0000 ~ 0xffff,第一辅助平面的范围是0x10000~0x1FFFD...