System.XML和编码问题

本文关键字:问题 编码 XML System | 更新日期: 2023-09-27 18:27:42

我有一个应用程序,它用于在现有的示例上创建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,它就会正确加载。

System.XML和编码问题

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

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

您可以通过GetEncoding方法获得myEncoding