jinfeng_wang

G-G-S,D-D-U!

BlogJava 首页 新随笔 联系 聚合 管理
  400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

下面对这个图进行一下说明:
第一个红框中的内容是我从unicode.org提供的GB2312->Unicode码表中随便抽取的一行,下面以它为例进行说明。
这里面列出的GB2312和我们计算机实际使用的GB2312是不一样的。因为GB2312的和ASCII的编码范围有冲突,所以使用时都采用两个字节高位置1的方式,也就是下面我列出的那个EUC才是在计算机内存储形式的GB2312。原来这是一个“暗”字。
前者和”区位码”是有直接关系的,”暗”的区位码1621,转换成HEX: 0×1015,只要把高低位都+0×20,就得到了GB2312: 0×3035。
下面再看看UNICODE,大家可以做一个实验,把0×6697转成DEC: 26263,建一个空白HTML档(encoding随意),在里面写上 暗 怎么样,就能看到这个字了吧:)
把它转成BIN: 0110 0110 1001 0111, 查UTF-8的转换表,这个字的Unicode: U+6679 在 U+0800 和 U+FFFF 之间,是要转换成三字节的UTF-8的,转换方法如上面所示,最后得出的UTF-8编码就是: 0xE69A97。


UTF-8字符各字节含义

0×00-0×7F 同ASCII,也不可能作为任何其他多字节UTF-8字符的一部分
0xC0-0xDF 多字节UTF-8字符的开始字节,而且据此可以判断出该UTF-8字符的长度(字节数)
0×80-0xBF 多字节UTF-8字符的跟随字节
0xFE-0xFF UTF-8未使用

那么如何判断UTF-8字符的长度呢?

0×00-0×7F 1字节
0xC0-0xDF 2字节
0xE0-0xEF 3字节
0xF0-0xF7 4字节
0xF8-0xFB 5字节
0xFC-0xFD 6字节

UTF-8字符范围

Unicode 字节数 表示方法 字节范围
U-00000000 -
U-0000007F
1 0xxxxxxx (0×00-0×7F)
U-00000080 -
U-000007FF
2 110xxxxx 10xxxxxx (0xC2-0xDF)(0×80-0xBF)
U-00000800 -
U-0000FFFF
3 1110xxxx 10xxxxxx 10xxxxxx 0xE0(0xA0-0xBF)(0×80-0xBF)
(0xE1-0xEF)(0×80-0xBF)(0×80-0xBF)
U-00010000 -
U-001FFFFF
4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 0xF0(0×90-0xBF)(0×80-0xBF)
(0×80-0xBF)(0xF1-0xF7)(0×80-0xBF)
(0×80-0xBF)(0×80-0xBF)
U-00200000 -
U-03FFFFFF
5 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 -
U-7FFFFFFF
6 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
posted on 2006-01-18 21:59 jinfeng_wang 阅读(614) 评论(0)  编辑  收藏 所属分类: ZZ

只有注册用户登录后才能发表评论。


网站导航: