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

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

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

    狼愛(ài)上貍

    我胡漢三又回來(lái)了

    Unicode是什么,UTF-8是什么

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


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

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

      2、臺(tái)灣,香港等地使用的是BIG5編碼
      3、日本:SJIS編碼

      如果把各種文字編碼形容為各地的方言,那么Unicode就是世界各國(guó)合作開(kāi)發(fā)的一種語(yǔ)言。
      在這種語(yǔ)言環(huán)境下,不會(huì)再有語(yǔ)言的編碼沖突,在同屏下,可以顯示任何語(yǔ)言的內(nèi)容,這就是Unicode的最大好處。

      那么Unicode是如何編碼的呢?其實(shí)非常簡(jiǎn)單。
      就是將世界上所有的文字用2個(gè)字節(jié)統(tǒng)一進(jìn)行編碼。可能你會(huì)問(wèn),2個(gè)字節(jié)最多能夠表示65536個(gè)編碼,夠用嗎?
      韓國(guó)和日本的大部分漢字都是從中國(guó)傳播過(guò)去的,字型是完全一樣的。
      比如:“文”字,GBK和SJIS中都是同一個(gè)漢字,只是編碼不同而已。
      那樣,像這樣統(tǒng)一編碼,2個(gè)字節(jié)就已經(jīng)足夠容納世界上所有的語(yǔ)言的大部分文字了。

      Unicode的學(xué)名是"Universal Multiple-Octet Coded Character Set",簡(jiǎn)稱為UCS。
      現(xiàn)在用的是UCS-2,即2個(gè)字節(jié)編碼,而UCS-4是為了防止將來(lái)2個(gè)字節(jié)不夠用才開(kāi)發(fā)的。UCS-2也稱為基本多文種平面。
      UCS-2轉(zhuǎn)換到UCS-4只是簡(jiǎn)單的在前面加2個(gè)字節(jié)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個(gè)輔助平面,由原先的65536個(gè)編碼擴(kuò)展至將近100萬(wàn)編碼。

      那么既然統(tǒng)一了編碼,如何兼容原先各國(guó)的文字編碼呢?
      這個(gè)時(shí)候就需要codepage了。
      什么是codepage?codepage就是各國(guó)的文字編碼和Unicode之間的映射表。
      比如簡(jiǎn)體中文和Unicode的映射表就是CP936,點(diǎn)這里查看官方的映射表。

      以下是幾個(gè)常用的codepage,相應(yīng)的修改上面的地址的數(shù)字即可。
    codepage=936 簡(jiǎn)體中文GBK
    codepage=950 繁體中文BIG5
    codepage=437 美國(guó)/加拿大英語(yǔ)
    codepage=932 日文
    codepage=949 韓文
    codepage=866 俄文
    codepage=65001 unicode UFT-8

    最后一個(gè)65001,據(jù)個(gè)人理解,應(yīng)該只是一個(gè)虛擬的映射表,實(shí)際只是一個(gè)算法而已。

    從936中隨意取一行,例如:
    0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH
    前面的編碼是GBK的編碼,后面的是Unicode。
    通過(guò)查這張表,就能簡(jiǎn)單的實(shí)現(xiàn)GBK和Unicode之間的轉(zhuǎn)換。

      現(xiàn)在明白了Unicode,那么UTF-8又是什么呢?又為什么會(huì)出現(xiàn)UTF-8呢?

      ASCII轉(zhuǎn)換成UCS-2,只是在編碼前插入一個(gè)0x0。用這些編碼,會(huì)包括一些控制符,比如 或 /,這在UNIX和一些C函數(shù)中,將會(huì)產(chǎn)生嚴(yán)重錯(cuò)誤。因此可以肯定,UCS-2不適合作為Unicode的外部編碼。

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

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

    按照UTF-8的編碼規(guī)則,分解如下:xxxx0100 xx111101 xx100000
    把除了x之外的數(shù)字拼接在一起,就變成“你”的Unicode編碼了。
    注意UTF-8的最前面3個(gè)1,表示整個(gè)UTF-8串是由3個(gè)字節(jié)構(gòu)成的。
    經(jīng)過(guò)UTF-8編碼之后,再也不會(huì)出現(xiàn)敏感字符了,因?yàn)樽罡呶皇冀K為1。

    以下是Unicode和UTF-8之間的轉(zhuǎn)換關(guān)系表:
    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編碼轉(zhuǎn)換到UTF-8,簡(jiǎn)單的把Unicode字節(jié)流套到x中就變成UTF-8了。


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

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

    主站蜘蛛池模板: 久久亚洲精精品中文字幕| 亚洲三级在线免费观看| 免费人成毛片动漫在线播放 | 亚洲韩国—中文字幕| xxxx日本免费| 三年片在线观看免费观看大全中国| 亚洲精品制服丝袜四区| 69成人免费视频无码专区| 国产免费区在线观看十分钟 | 亚洲成亚洲乱码一二三四区软件| 成人无遮挡裸免费视频在线观看| 99久久免费国产精品热| 亚洲中文字幕乱码AV波多JI| 亚洲欧洲美洲无码精品VA| 丁香花免费高清视频完整版| 久久久久久av无码免费看大片| 亚洲视频一区二区三区四区| 亚洲av午夜福利精品一区人妖| 在线看片无码永久免费aⅴ | 国产亚洲欧洲精品| 午夜国产大片免费观看| 亚洲综合免费视频| 中文在线观看永久免费| 亚洲欧美日韩一区二区三区| 亚洲综合在线观看视频| 国产亚洲色视频在线| 免费黄色网址入口| www视频免费看| 最新国产乱人伦偷精品免费网站 | 亚洲中文字幕人成乱码| 亚洲精品V欧洲精品V日韩精品 | 亚洲高清视频一视频二视频三| 黄页网站在线看免费| 午夜无码A级毛片免费视频| 永久免费精品影视网站| 亚洲精品无码专区在线播放| 亚洲成av人片不卡无码| 亚洲av无码无在线观看红杏| 免费人成无码大片在线观看| 午夜视频免费观看| 成人免费午夜视频|