我來解釋吧,這個問題關不難,只是很多中國程序員不懂裝懂亂講,再加上不斷地轉載,轉載地多了也就讓大家亂了方寸。

首先,大家要搞明白字符集與編碼的區別。
字符集,就是一集合,規定了這個集合里有哪些字符。
編碼,就是一個或多個字符集怎么影射到數字,好存儲在計算機里或網絡傳輸。

有上以上知識,就容易理解多了

XML中的encoding=gb2312是指這個文件里的字符集為gb2312,當你保存或傳輸時一定要用包含GB2312字符集的編碼,不然就可能會出錯,而XML文件本身存儲的編碼,正常情況下也是包含GB2312字符集的編碼,不然也可能出錯。

比如:UTF8實為一編碼,由很多字符集或其字集組成,同時UTF8這里面的所有字符本來就是一字符集,UTF8同時也是一字符集
再如:GB2312是一字符集,可以編碼為UTF-8 UTF-16 EUC-CN

 

EUC-CN是GB 2312最常用的表示方法。瀏覽器編碼表上的“GB2312”,通常都是指“EUC-CN”表示法。

GB 2312字符使用兩個字節來表示。

“第一位字節”使用0xA1-0xF7
“第二位字節”使用0xA1-0xFE
舉例來說,“啊”字是GB 2312之中的第一個漢字,它的區位碼是1601。

在EUC-CN之中,它把0xA0+16=0xB0,0xA0+1=0xA1,得出0xB0A1。


也就是說編碼里的字符本身就是字符集,但是字符集可以用包含此字符集的任何一種編碼進行編碼