BIG5字集是臺(tái)灣繁體字集,共包括國(guó)標(biāo)繁體漢字13053個(gè)
GB2312字集是簡(jiǎn)體字集, 全稱為GB2312(80)字集, 共包括國(guó)標(biāo)簡(jiǎn)體漢字6763個(gè);
GB2312是中國(guó)規(guī)定的漢字編碼, 也可以說(shuō)是簡(jiǎn)體中文的字符集編碼;
GBK包含全部中文字符;
GBK字集是簡(jiǎn)繁字集, 包括了GB字集, BIG5字集和一些符號(hào), 共包括21003個(gè)字符;
GBK是GB2312的擴(kuò)展, 除了兼容GB2312外, 它還能顯示繁體中文, 還有日文的假名;
GBK標(biāo)準(zhǔn), 他兼容GB2312標(biāo)準(zhǔn), 同時(shí)在GB2312標(biāo)準(zhǔn)的基礎(chǔ)上擴(kuò)展了GB13000包含的字;
注意:
1. GBK字集是簡(jiǎn)繁字集, 包括了GB字集, BIG5字集和一些符號(hào); 例如BIG5編碼能夠表示XX漢字, GBK編碼也能夠表示XX漢字, 但是XX漢字的BIG5編碼與GBK編碼是不同的.
2. GBK編碼兼容GB2312編碼, 例如GB2312編碼能夠表示YY漢字, 那么GBK編碼也能夠表示YY漢字, 而且YY漢字的GB2312編碼與GBK編碼是相同的.
3. 也就是說(shuō)"包含"與"兼容"是兩回事來(lái)的.
Unicode也是一種字符編碼方法, 由國(guó)際組織設(shè)計(jì), 可以容納全世界所有語(yǔ)言文字的編碼方案. Unicode的學(xué)名是"UniversalMultiple-Octet Coded Character Set". 簡(jiǎn)稱為UCS。UCS可以看作是"Unicode CharacterSet"的縮寫
1. ASCII, GB2312, GBK到GB18030的編碼方法是向下兼容的. 而Unicode只與ASCII兼容, 與GB碼不兼容.
例如"漢"字的Unicode編碼是6C49, 而GB碼是BABA.
2. 一般來(lái)說(shuō), 如果在簡(jiǎn)體中文操作系統(tǒng)中使用的繁體字, 選GBK碼繁體中文; 如果在繁體中文操作系統(tǒng)使用繁體字, 選Big5碼繁體中文;
BIG5編碼, GB編碼, Unicode編碼相當(dāng)于一個(gè)并列關(guān)系, 就是說(shuō)使用不同的編碼方式表達(dá)相同的內(nèi)容.
例如"漢"字的Unicode編碼是6C49, 而GB碼是BABA.
Unicode編碼只是規(guī)定如何編碼, 例如"漢"字的Unicode編碼是6C49, 那么如何把"漢"字保存到文件中, 你可以直接把6C49的數(shù)值保存, 你也可以吧6C49這4個(gè)字符來(lái)保存, 也就是說(shuō)需要一種保存格式(一種格式協(xié)議). UTF-8, UTF-7, UTF-16就是被廣泛接受的保存格式.
UTF-8編碼分段范圍:
編碼范圍 編碼格式
A. 0000 - 007F 0XXXXXXX
B. 0080 - 07FF 110XXXXX 10XXXXXX
C. 0800 - FFFF 1110XXXX 10XXXXXX 10XXXXXX
例如“漢”字的Unicode編碼是6C49, 6C49在編碼范圍范圍C之內(nèi), 所以使用編碼格式C(1110xxxx 10xxxxxx 10xxxxxx). 將6C49寫成二進(jìn)制是:0110 110001 001001, 依次代替模板中的X,得到:11100110 10110001 10001001, 即E6 B1 89. 所以"漢"字的Unicode編碼是6C49, UTF-8的編碼是E6B189.
現(xiàn)在把"漢"字的UTF-8的編碼保存在文本中, 程序知道這是UTF-8編碼, 提取E6B189中的信息得到6C49, 因?yàn)?C49必然是Unicode編碼, 所以知道這個(gè)是"漢"字.(因?yàn)檫@是一個(gè)格式協(xié)議, 程序就是按照這個(gè)格式協(xié)議來(lái)解析這個(gè)文件的).
UTF是“Unicode Transformation Format”的縮寫(UTF-8與ISO-8859-1完全兼容);
UTF-8則包含全世界所有國(guó)家需要用到的字符(因?yàn)閁nicode);
UTF-8編碼的文字可以在各國(guó)各種支持UTF8字符集的瀏覽器上顯示, 比如, 如果是UTF8編碼, 則無(wú)需下載IE的中文語(yǔ)言支持包(相當(dāng)于編碼格式), 也可以在外國(guó)人的英文IE上也能顯示中文(文字的顯示只需要字體文件即可);
UTF-8的中文所占用的字節(jié)比使用GBK所占用的字節(jié)(UTF-8占用3字節(jié), GBK占用2字節(jié)), 在html中, W3提倡用charset = "gbk", 而不是用charset = "gb2312";
1. UTF編碼是針對(duì)Unicode編碼的(例如2.1所說(shuō)的例子), 所以如果GB編碼與UTF編碼互轉(zhuǎn), 需要通過(guò)Unicode編碼做中間人.
2. Unicode編碼, GB編碼等就是對(duì)文字的編碼規(guī)則, UTF編碼是對(duì)Unicode編碼的存儲(chǔ)(傳輸)規(guī)則(不是對(duì)文字的編碼規(guī)則).
3. 例如:
UFT8編碼E6B189是對(duì)Unicode編碼的, 那么對(duì)應(yīng)的Unicode編碼是6C49, 這個(gè)Unicode編碼6C49代表中文的"漢"字;
假設(shè)UFT8編碼E6B189是對(duì)GBK編碼的, 那么對(duì)應(yīng)的GBK編碼也是6C49, 但是這個(gè)GBK編碼6C49肯定不是代表中文的"漢"字, 而是其他文字;
WideChar: 寬字符, 兩個(gè)字節(jié)為一個(gè)字符(比如Unicode碼, 這是全球統(tǒng)一編碼的, 每個(gè)字符占2個(gè)字節(jié))
MultiByte: 多字節(jié)碼, 一個(gè)字節(jié)或兩個(gè)字節(jié)為一個(gè)字符(比如UTF8,從1個(gè)字節(jié)到3個(gè)字節(jié))
Char: ANSI的單字符
MultiByte 以及 Char 這兩個(gè)應(yīng)該是兼容的, 可以認(rèn)為MultiByte是對(duì)ANSI的一種擴(kuò)充, 有時(shí)它是一個(gè)字符占一個(gè)字節(jié), 有時(shí)是占兩個(gè)字節(jié).
各編碼之間的互換請(qǐng)看: http://blog.csdn.net/bagboy_taobao_com/article/details/8594466
聯(lián)系客服