gpt4 book ai didi

c# - 如何更改 XmlReader 的字符编码

转载 作者:IT王子 更新时间:2023-10-29 04:33:33 25 4
gpt4 key购买 nike

我有一个简单的 XmlReader:

XmlReader r = XmlReader.Create(fileName);

while (r.Read())
{
Console.WriteLine(r.Value);
}

问题是,Xml 文件有 ISO-8859-9其中的字符,这使得 XmlReader 抛出“Invalid character in the given encoding.”异常。我可以通过添加 <?xml version="1.0" encoding="ISO-8859-9" ?> 来解决这个问题开头的行,但我想以另一种方式解决这个问题,以防我无法修改源文件。如何更改 XmlReader 的编码?

最佳答案

要强制 .NET 以 ISO-8859-9 格式读取文件,只需使用众多 XmlReader.Create 重载之一,例如

using(XmlReader r = XmlReader.Create(new StreamReader(fileName, Encoding.GetEncoding("ISO-8859-9")))) {
while(r.Read()) {
Console.WriteLine(r.Value);
}
}

但是,这可能行不通,因为 IIRC,W3C XML 标准说明了何时读取 XML 声明行,兼容的解析器应立即切换到 XML 声明中指定的编码,而不管它使用的是什么编码前。在您的情况下,如果 XML 文件没有 XML 声明,编码将为 UTF-8,它仍然会失败。我可能在这里胡说八道,所以试试看。 :-)

关于c# - 如何更改 XmlReader 的字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/961699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com