查看文章
 
unicode, uft-8, ansi, GB2312, GBK
2010-05-08 23:48

http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt

http://www.cl.cam.ac.uk/~mgk25/unicode.html

http://www.dreamdu.com/blog/2008/08/02/character_encoding/

http://www.linuxforum.net/books/UTF-8-Unicode.html

UNICODE和UTF-8的联系:
unicode 是一种编码表格,例如,给一个汉字规定一个代码。类似 GB2312-1980, GB18030等,只不过字集不同。一个unicode码可能转成长度为一个BYTE,或两个,三个,四个BYTE的UTF8码,取决于unicode码的值。英文unicode码因为值小于0x80,只要用一个BYTE的UTF8传送,比送unicode两个BYTEs快。UTF8是为传送unicode而想出来的“再编码”方法罢了。

UTF-8:为传输而设计的编码
UTF-8是UNICODE的一种变长字符编码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。用4个或6个字节去编码一个UNICODE字符可能太多了,但很少会遇到那样的UNICODE字符。
Unicode->UTF-8
1字节:00000000~0000007F -> 0xxxxxxx
2字节:00000080~000007FF -> 110xxxxx 10xxxxxx
3字节:00000800~0000FFFF -> 1110xxxx 10xxxxxx 10xxxxxx
4字节:00010000~001FFFFF -> 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
5字节:00200000~03FFFFFF -> 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
6字节:04000000~7FFFFFFF -> 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
举例:'丁'4E01(100111000000001)在800~FFFF之间,对应的UTF-8编码:E4B881(11100100 10111000 10000001)

使用UTF-8的好处:
字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本(见BOM) UTF-8 是字节顺序无关的。它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。
国外的用户如果使用Windows XP英文版,浏览UTF-8编码的任何网页,无论是中文、还是日文、韩文、阿拉伯文,都可以正常显示,UTF-8是世界通用的语言编码。而如果用Windows XP英文版的IE6.0浏览gb2312语言编码的网页,则会提示是否安装语言包。


类别:Linux| |分享到i贴吧|浏览(273)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu