請大家最好帶著批判的眼光來看,里面可能有很多錯誤,不要誤了大家,下面列出了很多參考文獻。如果發現了錯誤,請大家指出或討論。
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.
但由于一些原因,我上此站點有些慢,就轉放于此