請(qǐng)大家最好帶著批判的眼光來看,里面可能有很多錯(cuò)誤,不要誤了大家,下面列出了很多參考文獻(xiàn)。如果發(fā)現(xiàn)了錯(cuò)誤,請(qǐng)大家指出或討論。
1)UNICODE定義的字符集,剛開始只準(zhǔn)備用16位,可是好像不夠用,因?yàn)?6位最多只能容納6萬多個(gè)字符,后來就擴(kuò)展到32位了(好像實(shí)際上只有31位,最高位不用,永遠(yuǎn)為0)
2)UTF-8是UNICODE的一種編碼形式,由于Unicode開始只準(zhǔn)備用16位來表示所有字符,所以一般情況下UTF8編碼也只會(huì)出現(xiàn)1-3個(gè)字節(jié),但實(shí)際上它可以支持到6個(gè)字節(jié)(但是6個(gè)字節(jié)有一些保留位,真正有效的位也就剛好只有32,剛好容納UNICODE字符集。??后面附UTF-8的詳細(xì)編碼方式,可以看出為什么6個(gè)字節(jié),有效位只有32位。
3)平常所說的UNICODE編碼指的是UTF-16,?它使用16位,或者是32位來表示一個(gè)字符。UTF-16與UTF-8類似,只是跨步使用了2個(gè)字節(jié),而不是UTF-8的一個(gè)字節(jié)了(也就是要么2個(gè)字節(jié),要么4個(gè)字節(jié),不可能出現(xiàn)1個(gè)或者3個(gè)字節(jié)的編碼)。當(dāng)然如果用UTF-16這種編碼方式,文件必需要以一定的方式在開頭申明使用了這種方式,如何申明就不說了,這方面的資料網(wǎng)上很多,并且非常一致。
4)UTF-32就沒什么好說的了,網(wǎng)上資料寫的很明白,就是直接用一個(gè)32位來表示UNICODE。UTF-32與UTF-16一樣,他也要在文件的開頭以一定的方式來申明它使用了UTF-16編碼,要不然就不能正確解碼了。
??計(jì)算機(jī)編碼大全(強(qiáng)烈推薦)?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?
注:原來發(fā)表于http://bbs.xml.org.cn/dispbbs.asp?boardID=1&replyID=41780&ID=32741&skin=1.
但由于一些原因,我上此站點(diǎn)有些慢,就轉(zhuǎn)放于此