我来解释吧,这个问题关不难,只是很多中国程序员不懂装懂乱讲,再加上不断地转载,转载地多了也就让大家乱了方寸。

首先,大家要搞明白字符集与编码的区别。
字符集,就是一集合,规定了这个集合里有哪些字符。
编码,就是一个或多个字符集怎么影射到数字,好存储在计算机里或网络传输。

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

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。


也就是说编码里的字符本身就是字符集,但是字符集可以用包含此字符集的任何一种编码进行编码