Unicode说明


1. Unicode最初確是只有U+0000到U+FFFF,
但後來位置不夠用(單是Unicode內的漢字已有七萬多個)。
於是從v2.0開始,就出現了16個輔助平面(supplementary plane)。
第一個輔助平面(U+10000至U+1FFFF)用來擺放罕用符號,
第二個輔助平面(U+20000至U+2FFFF)用來擺放罕用漢字,
第十六個輔助平面(U+100000至U+10FFFF)劃作私人造字區。

2. Big-5碼由8140至FEFE,
第一個Byte由81-FE共126個
第二個byte由40-7E、A1-FE共157個
126乘157就是19782個碼

3. 這裡有很多人只看過Big5碼,於是混淆了字表與編碼兩個東西。
(Big-5其實是一個很差的字碼編排法!)

簡單來說,Unicode是字表、UTF-8、UTF-16、UTF-32是編碼方法。

就舉日文為例,日文裏有JIS-X0208、JIS-X0212、JIS-X0213等字表,
每個字表是一個94乘94的字碼表(為什麼是94就容後再談),
例如日文的「亞」字,就放到了JIS-X0208的「16-01」碼位。

日文的編碼方法就包括了EUC-JP、JIS、Shift_JIS等方法,
例如EUC-JP碼的「亞」字,是B0A1、
而Shift_jis碼的「亞」字,是889F。

Unicode字表,就是把字由0000排到10FFFF的字表;
UTF-16(又稱UCS2)是一個把每個字放到固定16bit的方法,
UTF-32(又稱UCS4)是一個把每個字放到固定32bit的方法,
UTF-8是用一byte代表英文字母,
兩bytes代表U+0080至U+07FF的字母,
三bytes代表U+0800至U+FFFF的字的方法,
輔助平面用字則用四至六bytes不等。

UTF-16、UTF-32和UTF-8,可依據數學算式互換,
不像big-5轉去GB碼般要用對照表,
所以不用擔心轉換速度,
亦不會因由一個編碼方法轉到另一個編碼方法而引致資料遺失。

UTF-16、UTF-32和UTF-8,各有優劣之處,
如UTF-8於記錄英文字母時用1byte、於記錄中文字時用3bytes,
所以用UTF-8記錄中文字要用較多位置;
UTF-16因每字均用2bytes,所以用UTF-16記錄中文字要較少位置,
但記錄英文字就要用多一倍位。

Microsoft之所以用UTF-16的原因,是因為它較容易計算,
而網頁用UTF-8的原因,是因為多數網頁內容均以西歐文字寫成,
儲存做UTF-8較省位,以及於U+0000至U+007F能與ASCII兼容。

網頁可以用UTF-8儲存,亦可用UTF-16儲存,視乎
你是否需要兼容ASCII碼,給較舊的瀏覽器使用(UTF-8),
還是你想於寫程式時容易處理一些(UTF-16)


Unicode(統一碼/標準萬國碼):簡介

  1. Unicode(統一碼)以2byte表達,共有65536種組合,是ISO-10646 UCS(UniversalCharacter Set,世界通用字集)的子集,截至v4.0.0為止收錄了有4144種字元集。
  2. Unicode不同版本的標準都收錄在 ftp.unicode.org,最新版本都收錄在ftp.unicode.org/UNIDATA,版本編號為4.0.0
  3. Unicode的分布可由ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt(830k)取得。
  4. Unicode皆以16進位,開頭以"U+"表示,如U+4E00(注意,不是0x4E00)。
  5. Unicode 只是一個字形和內碼上的標準,並沒有定義實際在電腦上存取的方法,因此Unicode協會便定義了一整套的電腦存取Unicode編碼的轉換格式,並考慮了與其它編碼方式兼容,稱之為UTF(Unicode/UCS Transformation Format,統一碼/通用字集變換格式)。常用的格式有UTF-8和UTF-16
  6. UTF-16基本上就是Unicode雙byte編碼的實現,再加上一個應付未來擴充需求的編碼機制(但很少用)。
  7. UTF-8是一種不等幅的編碼方式,可能需要1,2,3個bytes來儲存,ascii字元不需做轉換,保持原狀﹔但其他的語文資料則須透過程式來做轉換,容量會因每個自需要額外多用1~2個bytes來編碼而變大。
  8. UTF-8的轉換(Unicode->UTF-8)
            U+0000~U+007F (1 byte,128個)    0+7bits                          [2^7=128]
    
            U+0080~U+07FF (2 byte,1920個)   110+5bits,  10+6bits            [2^11=2048]
    
            U+0800~U+FFFF (3 bytes,63488個) 1110+4bits, 10+6bits,10+6bits  [2^16=65536]
    
           --------------------------------
    
            U+0000~U+FFFF    共65536個
           ================================
          

Unihan(統漢字)

  1. 在可能情形下,Unicode 企圖合併語言中的重複部分,雙位元組部份將中日韓文加以整合(CJK Unification),稱為Unihan(統漢字)。
  2. 目前最新的Unihan database其Unicode version為3.2.0,Table version為1.1,釋出日期為2002/03/15。
  3. Unihan資料庫在ftp://ftp.unicode.org/Public/UNIDATA/Unihan.zip(4.96mb),解壓縮後大約25mb。
  4. Unicode中Unihan分布於U+3400~U+9FFF與U+F900~U+FAFF的空間,共28160個,其他為另外的國家或特殊符號所使用。
  5. Windows2000/XP上的記事本程式可儲存與編輯Unicode,UTF-8等格式。
  6. big5碼與Unicode的對應可經由擷取Unihan的資料庫得知big5碼與Unicode碼的對應,共收錄13063個big5碼。
    #grep KBigFive Unihan.txt | sort | > KBigFive.txt //under linux

網路資源

unicode主網站
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值