UTF8字符集范围

UTF-8是unicode的一种实现方式,其他还有UTF-16等。Unicode作为一种通用字符集,包含了全世界所有字符,每个字符一个独立的编码。汉字的unicode编码表可以在此处查询:http://www.chi2ko.com/tool/CJK.htm

UTF-8是一种变长的编码方式,长度从1到6不等。从字符第1个字节就能知道该字符占几个字节。比如"中",UTF-8编码是%E4%B8%AD,显然是在e0-ef范围内,表明其占用3个字节。汉字基本都是3个字节。中文输入状态下的符号,比如间隔号”·“,其编码是%C2%B7,在c0-df范围之间,则表示其占2个字节。

下表是UTF-8字符集的范围

0xxxxxxx (00-7f) (1个字节)
110xxxxx 10xxxxxx (c0-df)(80-bf) (2个字节)
1110xxxx 10xxxxxx 10xxxxxx (e0-ef)(80-bf)(80-bf) (3个字节)
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx (f0-f7)(80-bf)(80-bf)(80-bf) (4个字节)
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx (f8-fb)(80-bf)(80-bf)(80-bf)(80-bf) (5个字节)
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx (fc-fd)(80-bf)(80-bf)(80-bf)(80-bf)(80-bf) (6个字节)

Perl内,可以通过ord函数获得字符首字节的ASCII码,来判断字符的长度。判断英文字符(ASCII<128)的简便办法是位操作。ord($str) & 0x80,返回0则表示第一位为0,即一个字节的英文数字字符,单字节的英文字符ASCII码和UTF-8码是一样的。

posted @ 2012-05-26 15:40  我的白日梦  阅读(2600)  评论(0编辑  收藏  举报