<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狼愛上貍

    我胡漢三又回來了

    Unicode是什么,UTF-8是什么

    一直在編碼方面要求不是很高,所以對Unicode和UTF-8也不甚了解。
      最近偶然翻到一篇UTF-8的文章,感覺解釋的非常繁雜,因此才想到重新寫一篇簡單易懂一點的。


      首先說明一下現在常用的一些編碼方案:
     ?。?、在中國,大陸最常用的就是GBK18030編碼,除此之外還有GBK,GB2312,這幾個編碼的關系是這樣的。
    最早制定的漢字編碼是GB2312,包括6763個漢字和682個其它符號
    95年重新修訂了編碼,命名GBK1.0,共收錄了21886個符號。
    之后又推出了GBK18030編碼,共收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字,現在WINDOWS平臺必需要支持GBK18030編碼。

    按照GBK18030、GBK、GB2312的順序,3種編碼是向下兼容,同一個漢字在三個編碼方案中是相同的編碼。

      2、臺灣,香港等地使用的是BIG5編碼
     ?。场⑷毡荆篠JIS編碼

      如果把各種文字編碼形容為各地的方言,那么Unicode就是世界各國合作開發的一種語言。
      在這種語言環境下,不會再有語言的編碼沖突,在同屏下,可以顯示任何語言的內容,這就是Unicode的最大好處。

      那么Unicode是如何編碼的呢?其實非常簡單。
      就是將世界上所有的文字用2個字節統一進行編碼??赡苣銜枺矀€字節最多能夠表示65536個編碼,夠用嗎?
      韓國和日本的大部分漢字都是從中國傳播過去的,字型是完全一樣的。
      比如:“文”字,GBK和SJIS中都是同一個漢字,只是編碼不同而已。
      那樣,像這樣統一編碼,2個字節就已經足夠容納世界上所有的語言的大部分文字了。

      Unicode的學名是"Universal Multiple-Octet Coded Character Set",簡稱為UCS。
      現在用的是UCS-2,即2個字節編碼,而UCS-4是為了防止將來2個字節不夠用才開發的。UCS-2也稱為基本多文種平面。
      UCS-2轉換到UCS-4只是簡單的在前面加2個字節0。
      UCS-4則主要用于保存輔助平面,例如Unicode 4.0中的第二輔助平面
      20000-20FFF - 21000-21FFF - 22000-22FFF - 23000-23FFF - 24000-24FFF - 25000-25FFF -   26000-26FFF - 27000-27FFF - 28000-28FFF - 29000-29FFF - 2A000-2AFFF - 2F000-2FFFF
      總共增加了16個輔助平面,由原先的65536個編碼擴展至將近100萬編碼。

      那么既然統一了編碼,如何兼容原先各國的文字編碼呢?
      這個時候就需要codepage了。
      什么是codepage?codepage就是各國的文字編碼和Unicode之間的映射表。
      比如簡體中文和Unicode的映射表就是CP936,點這里查看官方的映射表。

      以下是幾個常用的codepage,相應的修改上面的地址的數字即可。
    codepage=936 簡體中文GBK
    codepage=950 繁體中文BIG5
    codepage=437 美國/加拿大英語
    codepage=932 日文
    codepage=949 韓文
    codepage=866 俄文
    codepage=65001 unicode UFT-8

    最后一個65001,據個人理解,應該只是一個虛擬的映射表,實際只是一個算法而已。

    從936中隨意取一行,例如:
    0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH
    前面的編碼是GBK的編碼,后面的是Unicode。
    通過查這張表,就能簡單的實現GBK和Unicode之間的轉換。

      現在明白了Unicode,那么UTF-8又是什么呢?又為什么會出現UTF-8呢?

      ASCII轉換成UCS-2,只是在編碼前插入一個0x0。用這些編碼,會包括一些控制符,比如 或 /,這在UNIX和一些C函數中,將會產生嚴重錯誤。因此可以肯定,UCS-2不適合作為Unicode的外部編碼。

      因此,才誕生了UTF-8。那么UTF-8是如何編碼的?又是如何解決UCS-2的問題呢?

    例:
    E4 BD A0        11100100 10111101 10100000
    這是“你”字的UTF-8編碼
    4F 60          01001111 01100000
    這是“你”的Unicode編碼

    按照UTF-8的編碼規則,分解如下:xxxx0100 xx111101 xx100000
    把除了x之外的數字拼接在一起,就變成“你”的Unicode編碼了。
    注意UTF-8的最前面3個1,表示整個UTF-8串是由3個字節構成的。
    經過UTF-8編碼之后,再也不會出現敏感字符了,因為最高位始終為1。

    以下是Unicode和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

    Unicode編碼轉換到UTF-8,簡單的把Unicode字節流套到x中就變成UTF-8了。


    出處:http://www.ii8888.com/Article_View.asp?id=871

    posted on 2006-11-03 10:07 狼愛上貍 閱讀(466) 評論(0)  編輯  收藏 所屬分類: JAVA

    主站蜘蛛池模板: 无人在线观看完整免费版视频| 国精产品一区一区三区免费视频| 国产又大又粗又长免费视频| 久久青青成人亚洲精品| 中国极品美軳免费观看| 亚洲动漫精品无码av天堂| 中文无码成人免费视频在线观看| 亚洲国产第一站精品蜜芽| 在线毛片片免费观看| 亚洲激情在线观看| 无码人妻久久一区二区三区免费丨| 亚洲熟妇无码久久精品| 一二三四免费观看在线视频中文版| 亚洲性色AV日韩在线观看| 国产成人涩涩涩视频在线观看免费| 国产亚洲综合一区二区三区| 国产午夜亚洲精品理论片不卡 | 国产成人人综合亚洲欧美丁香花 | 亚洲AV中文无码乱人伦下载| 88av免费观看入口在线| 久久精品国产亚洲av麻豆图片 | 国产又长又粗又爽免费视频| 一级特黄a大片免费| 国产AV无码专区亚洲AVJULIA| 99视频免费播放| 亚洲色最新高清av网站| 亚洲第一福利网站在线观看| 免费萌白酱国产一区二区三区| 亚洲最大在线视频| 全黄a免费一级毛片人人爱| 成全视频在线观看免费| 亚洲色一区二区三区四区| 亚洲乱码中文字幕综合234| 91禁漫免费进入| 亚洲AV成人无码网天堂| 久久久久亚洲精品美女| 日韩一级在线播放免费观看| 最近国语视频在线观看免费播放 | 日韩在线天堂免费观看 | 亚洲第一成年网站视频| 亚洲动漫精品无码av天堂|