unicode编码集 和 unicode存储编码 对应规则

来源:互联网 发布:北京点知教育 编辑:程序博客网 时间:2024/06/06 12:52
   |  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的编码规则

已知"严"的unicode是4E25(1001110 00100101), 根据上表, 可以发现4E25处在第三行的范围内(0000 0800 - 0000 FFFF), 因此"严"的UTF-8编码需要三个字节, 即格式是"1110xxxx 10xxxxxx 10xxxxxx". 然后, 从"严"的最后一个二进制位开始, 依次从后向前填入格式中的x, 多出的位补0. 这样就得到了, "严"的UTF-8编码是 "11100100 1011100010100101", 转换成十六进制就是E4B8A5.

Unicode规范中定义, 每一个文件的最前面分别加入一个表示编码顺序的字符, 这个字符的名字叫做"零宽度非换行空格"(ZERO WIDTH NO-BREAK SPACE), 用FEFF表示. 这正好是两个字节, 而且FF比FE大1.// Big Endian(FEFF)    Little Endian(FFFE)NOTE:如果一个文本文件的头两个字节是FE FF, 就表示该文件采用大头方式; 如果头两个字节是FF FE, 就表示该文件采用小头方式.

上一节已经提到, Unicode码可以采用UCS-2格式直接存储. 以汉字"严"为例, Unicode码是4E25, 需要用两个字节存储, 一个字节是4E, 另一个字节是25. 存储的时候, 4E在前,25在后, 就是Big endian方式; 25在前, 4E在后, 就是Little endian方式.// Big Endian(4E25)    Little Endian(254E)因此, 第一个字节在前, 就是"大头方式"(Big endian), 第二个字节在前就是"小头方式"(Little endian).

参考链接
1 0
原创粉丝点击