今天用C#读取XML文件时遇到了一个这样的问题"系统不支持GBK编码".代码如下:

  try
  { 
  string xmlurl ="test.xml";
  System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
  doc.Load(xmlurl);
    ......
    ......
   }
   catch(Exception ex)
   {
    System.Diagnostics.Trace.WriteLine(ex.ToString());
   }

设段点跟踪发现在doc.Load(xmlurl)这里出现了异常,异常是:"系统不支持GBK编码"
以下是test.xml文档内容:
<?xml version="1.0" encoding="GBK" ?> 
<person>
<name>张三</name>
<sex>男</sex>
</person>如果把test.xml里的encoding="utf-8" 或 encoding = "gb2312" 或 encoding = "Unicode"等就没问题
  请教各位大虾们,是不是C#不支持GBK编码,如果支持怎么解决这个问题?谢谢!

解决方案 »

  1.   

    试试:
    Thread.CurrentTread.CurrentCulture = new CultureInfo("GBK");
    没测试过
      

  2.   

    先通过文本方式按GBK编码装载进来成string,然后再用Xml装载可能需要把那个Xml头去掉
      

  3.   

    好像不支持,
    我都是在Load的时候如果出错,
    就说明可能是编码不支持或其它原因,
    就把xml下下来,保存,在本地,然后,编码转化成GB2312的,
    然后再处理
      

  4.   

    不是C#里不能使用GBK,是你的xml格式不对,所以造成DOM解析的时候,出现编码格式错误。
    你在xml中指定encoding="GBK",但是你的xml文档不是gbk编码格式的。
      

  5.   

    那这种情况要如何处理呢?
    xml 有时候不是自己定的呀
      

  6.   

    据说使用net framework 2.0就支持gbk了
      

  7.   

    看过到过文章说gbk在.net framework1.x中不支持的。2.0框架不清楚。
      

  8.   

    1.1框架本身是不支持gbk的,这个我试过了,写xml文件的时候也试如此