Unicode:
unicode.org制定的編碼機制, 要將全世界常用文字都函括進去.
在1.0中是16位編碼, 由U+0000到U+FFFF. 每個2byte碼對應一個字元; 在2.0開始拋棄了16位限制, 原來的16位作為基本位平面, 另外增加了16個位平面, 相當於20位編碼, 編碼範圍0到0x10FFFF.
UCS:
ISO制定的ISO10646標準所定義的 Universal Character Set, 採用4byte編碼.
Unicode與UCS的關係:
ISO與unicode.org是兩個不同的組織, 因此最初制定了不同的標準; 但自從unicode2.0開始, unicode採用了與ISO 10646-1相同的字型檔和字碼, ISO也承諾ISO10646將不會給超出0x10FFFF的UCS-4編碼賦值, 使得兩者保持一致.
UCS的編碼方式:
UCS-2, 與unicode的2byte編碼基本一樣.
UCS-4, 4byte編碼, 目前是在UCS-2前加上2個全零的byte.
UTF: Unicode/UCS Transformation Format
UTF-8, 8bit編碼, ASCII不作變換, 其他字元做變長編碼, 每個字元1-3 byte. 通常作為外碼. 有以下優點:
* 與CPU位元組順序無關, 可以在不同平台之間交流
* 容錯能力高, 任何一個位元組損壞後, 最多隻會導致一個編碼碼位損失, 不會鏈鎖錯誤(如GB碼錯一個位元組就會整行亂碼)
UTF-16, 16bit編碼, 是變長碼, 大致相當於20位編碼, 值在0到0x10FFFF之間, 基本上就是unicode編碼的實現. 它是變長碼, 與CPU字序有關, 但因為最省空間, 常作為網路傳輸的外碼.
UTF-16是unicode的preferred encoding.
UTF-32, 僅使用了unicode範圍(0到0x10FFFF)的32位編碼, 相當於UCS-4的子集.
UTF與unicode的關係:
Unicode是一個字元集, 可以看作為內碼.
而UTF是一種編碼方式, 它的出現是因為unicode不適宜在某些場合直接傳輸和處理. UTF-16直接就是unicode編碼, 沒有變換, 但它包含了0x00在編碼內, 頭256位元組碼的第一個byte都是0x00, 在作業系統(C語言)中有特殊意義, 會引起問題. 採用UTF-8編碼對unicode的直接編碼作些變換可以避免這問題, 並帶來一些優點.
中國國標編碼:
GB 13000: 完全等同於ISO 10646-1/Unicode 2.1, 今後也將隨ISO 10646/Unicode的標準更改而同步更改.
GBK: 對GB2312的擴充, 以容納GB2312字元集範圍以外的Unicode 2.1的統一漢字部分, 並且增加了部分unicode中沒有的字元.
GB 18030-2000: 基於GB 13000, 作為Unicode 3.0的GBK擴充版本, 覆蓋了所有unicode編碼, 地位等同於UTF-8, UTF-16, 是一種unicode編碼形式. 變長編碼, 用單位元組/雙位元組/4位元組對字元編碼. GB18030向下相容GB2312/GBK.
GB 18030是中國所有非手持/嵌入式電腦系統的強制實施標準.