posts - 82, comments - 269, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          UNICODE的一點理解

          Posted on 2006-11-12 18:17 itspy 閱讀(1760) 評論(3)  編輯  收藏 所屬分類: 其它技術
          看了好多UNICODE的標準了,經常在不同的地方看到不一致的說法,現在把我的理解寫下來。

          請大家最好帶著批判的眼光來看,里面可能有很多錯誤,不要誤了大家,下面列出了很多參考文獻。如果發現了錯誤,請大家指出或討論。

          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.
          但由于一些原因,我上此站點有些慢,就轉放于此


          評論

          # re: UNICODE的一點理解  回復  更多評論   

          2006-11-12 21:23 by jiangsukid
          16個字節,或者是32個字節來
          是16個bit, 2個字節?
          筆誤嗎?

          # re: UNICODE的一點理解  回復  更多評論   

          2006-11-12 22:12 by itspy
          @jiangsukid
          謝謝你的提醒,我寫錯了.

          應該是16位,或者是32位.我馬上去修改

          # re: UNICODE的一點理解  回復  更多評論   

          2006-11-14 12:33 by Dennis
          Unicode 3.0 版本, 實際上只需要 21 bits 就能表達所有字
          即使用 UTF-32 時, 也只會用去其中 21 bits
          http://www.unicode.org/faq/utf_bom.html



          主站蜘蛛池模板: 盐山县| 罗江县| 友谊县| 乳山市| 泗洪县| 霍邱县| 石台县| 江永县| 恩平市| 内江市| 光山县| 滕州市| 石台县| 泾阳县| 衡东县| 满洲里市| 喀喇| 昭通市| 福清市| 榕江县| 上饶县| 扶风县| 大庆市| 定陶县| 乐都县| 杭锦后旗| 涡阳县| 会东县| 岚皋县| 寿宁县| 延津县| 临湘市| 衡东县| 应城市| 衡阳市| 休宁县| 龙泉市| 普陀区| 甘谷县| 思南县| 沅陵县|