我來解釋吧,這個(gè)問題關(guān)不難,只是很多中國程序員不懂裝懂亂講,再加上不斷地轉(zhuǎn)載,轉(zhuǎn)載地多了也就讓大家亂了方寸。
首先,大家要搞明白字符集與編碼的區(qū)別。
字符集,就是一集合,規(guī)定了這個(gè)集合里有哪些字符。
編碼,就是一個(gè)或多個(gè)字符集怎么影射到數(shù)字,好存儲(chǔ)在計(jì)算機(jī)里或網(wǎng)絡(luò)傳輸。
有上以上知識(shí),就容易理解多了
XML中的encoding=gb2312是指這個(gè)文件里的字符集為gb2312,當(dāng)你保存或傳輸時(shí)一定要用包含GB2312字符集的編碼,不然就可能會(huì)出錯(cuò),而XML文件本身存儲(chǔ)的編碼,正常情況下也是包含GB2312字符集的編碼,不然也可能出錯(cuò)。
比如:UTF8實(shí)為一編碼,由很多字符集或其字集組成,同時(shí)UTF8這里面的所有字符本來就是一字符集,UTF8同時(shí)也是一字符集
再如:GB2312是一字符集,可以編碼為UTF-8 UTF-16 EUC-CN
EUC-CN是GB 2312最常用的表示方法。瀏覽器編碼表上的“GB2312”,通常都是指“EUC-CN”表示法。
GB 2312字符使用兩個(gè)字節(jié)來表示。
“第一位字節(jié)”使用0xA1-0xF7
“第二位字節(jié)”使用0xA1-0xFE
舉例來說,“啊”字是GB 2312之中的第一個(gè)漢字,它的區(qū)位碼是1601。
在EUC-CN之中,它把0xA0+16=0xB0,0xA0+1=0xA1,得出0xB0A1。
也就是說編碼里的字符本身就是字符集,但是字符集可以用包含此字符集的任何一種編碼進(jìn)行編碼