utf ucs16

来源:互联网 发布:伺服控制系统编程 编辑:程序博客网 时间:2024/06/05 23:01
UTF-8的特点是对不同范围的字符使用不同长度的编码。对于 0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是4个字节。从表3-2可以看出,4字节模板有21个 x,即可以容纳21位二进制数字。Unicode的最大码位0x10FFFF也只有21位。
    如:“汉”字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。
    又如:Unicode编码0x20C30在0x010000-0x10FFFF之间,使用4字节模板了:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx。将0x20C30写成21位二进制数字(不足21位就在前面补0):0 0010 0000 1100 0011 0000,用这个比特流依次代替模板中的x,得到:11110000 10100000 10110000 10110000,即F0 A0 B0 B0。

   |  Unicode符号范围      |  UTF-8编码方式 n |  (十六进制)           | (二进制)---+-----------------------+------------------------------------------------------ 1 | 0000 0000 - 0000 007F |                                              0xxxxxxx 2 | 0000 0080 - 0000 07FF |                                     110xxxxx 10xxxxxx 3 | 0000 0800 - 0000 FFFF |                            1110xxxx 10xxxxxx 10xxxxxx 4 | 0001 0000 - 0010 FFFF |                   11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5 | 0020 0000 - 03FF FFFF |          111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 6 | 0400 0000 - 7FFF FFFF | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx                    表 1. UTF-8的编码规则

将UTF-8转换为 UNICODE的过程,实际上是将按UTF-8编码规则填充至UNICODE的编码提取出来的过程,即将8位的字节“xxxx xxxx”提取出来的过程,如某字符以“1110xxxx 10xxxxxx 10xxxxxx”的编码方式进行UTF-8编码,还原后UNICODE编码为:“xxxx xxxx”。
    例如字符“中”,二进制序列(双字节)为:0100 1110 0010 1101,进行UTF-8编码后的字节二进制序列(三字节)为:1110 0100  10 111000  10 101101,进行UTF-8转码即去掉第一个字节的“1110”,第二个字节的“10”,第三个字节的“10”,然后再将剩余的二进制序列组合成一个双字节的二进制序列,即还原为:0100 1110 0010 1101,如此则完成转码。



另外,用程序从本地机器上读取得的文件系统中的文件(夹)名遵从操作系统默认编码.大陆一般为gb2312.


0 0
原创粉丝点击