【发布时间】:2011-03-09 15:56:28
【问题描述】:
我正在创建这样的 XDocument:
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"));
当我像这样 (doc.Save(@"c:\tijd\file2.xml");) 保存文档时,我得到了这个:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
没关系。
但我想将内容作为xml返回,我找到了以下代码:
var wr = new StringWriter();
doc.Save(wr);
string s = (wr.GetStringBuilder().ToString());
此代码有效,但字符串 's' 以此开头:
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
所以它从 utf8 变成了 utf16,这不是我想要的,因为现在我无法在 Internet Explorer 中阅读它。
有没有办法防止这种行为?
【问题讨论】:
-
这里有一个大红旗,字符串编写器确实包含一个 utf-16 编码的字符串。即使您覆盖 Encoding 属性。这是如何从 StringWriter 进入 IE 的?
-
好问题。我用 File.WriteAllText 将字符串 's' 保存到一个文件中,然后用 IE 打开它。在我的问题中没有明确说明...
-
对,File.WriteAllText() 调用是真正 确定编码的调用。默认为 utf-8,除非您使用采用编码的重载。
标签: c# linq-to-xml