- 論壇徽章:
- 0
|
Unicode:
unicode.org制定的編碼機(jī)制, 要將全世界常用文字都函括進(jìn)去.
在1.0中是16位編碼, 由U+0000到U+FFFF. 每個(gè)2byte碼對(duì)應(yīng)一個(gè)字符; 在2.0開(kāi)始拋棄了16位限制, 原來(lái)的16位作為基本位平面, 另外增加了16個(gè)位平面, 相當(dāng)于20位編碼, 編碼范圍0到0x10FFFF.
UTF: Unicode/UCS Transformation Format
UTF-8, 8bit編碼, ASCII不作變換, 其他字符做變長(zhǎng)編碼, 每個(gè)字符1-3 byte. 通常作為外碼. 有以下優(yōu)點(diǎn):
* 與CPU字節(jié)順序無(wú)關(guān), 可以在不同平臺(tái)之間交流
* 容錯(cuò)能力高, 任何一個(gè)字節(jié)損壞后, 最多只會(huì)導(dǎo)致一個(gè)編碼碼位損失, 不會(huì)鏈鎖錯(cuò)誤(如GB碼錯(cuò)一個(gè)字節(jié)就會(huì)整行亂碼)
UTF-16, 16bit編碼, 是變長(zhǎng)碼, 大致相當(dāng)于20位編碼, 值在0到0x10FFFF之間, 基本上就是unicode編碼的實(shí)現(xiàn). 它是變長(zhǎng)碼, 與CPU字序有關(guān), 但因?yàn)樽钍】臻g, 常作為網(wǎng)絡(luò)傳輸?shù)耐獯a.
UTF-16是unicode的preferred encoding.
UTF-32, 僅使用了unicode范圍(0到0x10FFFF)的32位編碼, 相當(dāng)于UCS-4的子集.
UTF與unicode的關(guān)系:
Unicode是一個(gè)字符集, 可以看作為內(nèi)碼.
而UTF是一種編碼方式, 它的出現(xiàn)是因?yàn)閡nicode不適宜在某些場(chǎng)合直接傳輸和處理. UTF-16直接就是unicode編碼, 沒(méi)有變換, 但它包含了0x00在編碼內(nèi), 頭256字節(jié)碼的第一個(gè)byte都是0x00, 在操作系統(tǒng)(C語(yǔ)言)中有特殊意義, 會(huì)引起問(wèn)題. 采用UTF-8編碼對(duì)unicode的直接編碼作些變換可以避免這問(wèn)題, 并帶來(lái)一些優(yōu)點(diǎn).
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/8709/showart_1074798.html |
|