【发布时间】:2017-03-09 21:28:47
【问题描述】:
我试图在浏览器中打开一个 xml 文件,但出现以下错误:
不支持从当前编码切换到指定编码。错误处理资源
现在我通过下面的代码使用 C# 生成这个 XML。我的 XML 有拉丁字符,所以我希望编码为 ISO-8859-1 而不是 utf-16。但是每次我的 xml 生成时,它都将编码为 utf-16 而不是 ISO-8859-1。我想知道是什么原因和解决方法。
注意:我只需要 ISO-8859-1 而不是 utf-8 或 utf-16,因为如果编码为 ISO-8859-1,则 XML 会正确生成。
C#代码:
var doc = new XDocument(new XDeclaration("1.0", "iso-8859-1", "yes"),new XElement("webapp", new XAttribute("name", webApp.Name), new XAttribute("id", webApp.Id), Myinformation());
var wr= new StringWriter();
doc.Save(wr);
return wr.ToString();
【问题讨论】:
-
查看the question you asked an hour ago 中给出的cmets 和链接。您需要使用
XmlWriter。使用ToString或StringWriter将始终导致使用 UTF-16 的XmlWriter。 -
好的..会尝试的..抱歉我错过了,因为问题是不同的时间
-
XML 不支持拉丁字符。使用 XmlWriter 的 Ankit 建议会自动将拉丁字符转换为 unicode 值。见网页:en.wikipedia.org/wiki/…
-
我不介意将字符转换为 unicode 值。我只希望我的 XMl 在浏览器上生成而不会破坏特殊字符,例如 Å、Ø 等。我尝试使用编码 iso-8859-1 并能够在浏览器中生成这些字符。我的挑战是 C# 不允许我应用 ISO-8589-1 编码。它总是更改为 UTF-16
-
@jdweng 只有 5 个“特殊”字符可能需要在 XML 中转义 -
< > & " '- 其余都是公平的游戏。
标签: c# xml utf iso-8859-1