0

我有一个应用程序用于在现有示例上创建 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.dll 中发生“System.Xml.XmlException”类型的未处理异常附加信息:指定编码的无效字符。,第 35 行,第 16 位。

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

4

1 回答 1

0

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

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

您可以myEncoding通过GetEncoding方法获取。

于 2013-08-14T12:13:55.533 回答