请大家最好带着批判的眼光来看,里面可能有很多错误,不要误了大家,下面列出了很多参考文献。如果发现了错误,请大家指出或讨论。
1)UNICODE定义的字符集,刚开始只准备用16位,可是好像不够用,因为16位最多只能容纳6万多个字符,后来就扩展到32位了(好像实际上只有31位,最高位不用,永远为0)
2)UTF-8是UNICODE的一种编码形式,由于Unicode开始只准备用16位来表示所有字符,所以一般情况下UTF8编码也只会出现1-3个字节,但实际上它可以支持到6个字节(但是6个字节有一些保留位,真正有效的位也就刚好只有32,刚好容纳UNICODE字符集。 后面附UTF-8的详细编码方式,可以看出为什么6个字节,有效位只有32位。
3)平常所说的UNICODE编码指的是UTF-16, 它使用16位,或者是32位来表示一个字符。UTF-16与UTF-8类似,只是跨步使用了2个字节,而不是UTF-8的一个字节了(也就是要么2个字节,要么4个字节,不可能出现1个或者3个字节的编码)。当然如果用UTF-16这种编码方式,文件必需要以一定的方式在开头申明使用了这种方式,如何申明就不说了,这方面的资料网上很多,并且非常一致。
4)UTF-32就没什么好说的了,网上资料写的很明白,就是直接用一个32位来表示UNICODE。UTF-32与UTF-16一样,他也要在文件的开头以一定的方式来申明它使用了UTF-16编码,要不然就不能正确解码了。
计算机编码大全(强烈推荐) http://www.cppblog.com/oosky/archive/2005/12/13/1723.aspx
http://bbs.netton.cn/ShowPost.asp?ThreadID=1906
http://iask.sina.com.cn/b/3798538.html
http://www.matrix.org.cn/thread.shtml?topicId=34590&forumId=19
http://www.ismayday.com/article.asp?id=61
http://www.cppblog.com/liangbo/archive/2006/04/23/6103.html
http://dev.csdn.net/article/35/35305.shtm
http://support.uufriend.com/blog/tom/99220.htm
http://spaces.msn.com/iamtin/Blog/cns!1pvp_euYfEkmt-djP-0RlwBw!302.entry
http://news.onlinedown.net/info/13164-1.htm
http://www.linuxfans.org/nuke/modules.php?name=News&file=article&op=view&sid=1749
UTF-8的编码方式
U-00000000 - U-0000007F: 0xxxxxxx U-00000080 - U-000007FF: 110xxxxx 10xxxxxx U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 注:原来发表于http://bbs.xml.org.cn/dispbbs.asp?boardID=1&replyID=41780&ID=32741&skin=1.但由于一些原因,我上此站点有些慢,就转放于此
Powered by: BlogJava Copyright © itspy