System.XML和编码问题

时间:2013-08-14 12:05:37

标签: c# xml character-encoding system.xml

我有一个用于在现有示例上创建XML文档的应用程序。但那不是重点。今天我注意到如果打开的文件编码是ANSI则会出错。在此之前,我使用文件UTF-8,并没有出现这个问题。你应该怎么做以及如何做?

代码片段:

string filepath;
XmlDocument xdoc = new XmlDocument();
XmlElement root;
...............
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    filepath = openFileDialog1.FileName;
    textBox1.Text = filepath;
    load();
}
...............
public void load()
{
    xdoc.Load(filepath);
    root = xdoc.DocumentElement;
...............

错误:

  

发生了'System.Xml.XmlException'类型的未处理异常   System.Xml.dll其他信息:无效字符   指定的编码。,第35行,第16位。

该行是西里尔符号(俄语)。但如果我通过NotePad ++将此文档转换为UTF-8 - 它正确加载。

1 个答案:

答案 0 :(得分:0)

您可以使用StreamReader以正确的编码读取文件,然后将该流加载到接受流的XmlDocument overload中。

using(var sr = new StreamReader(filepath, myEncoding))
{
   xdoc.Load(sr);
}

您可以通过GetEncoding方法获取myEncoding