我正在创建这样的 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 中读取它。
有没有办法阻止这种行为?
最佳答案
StringWriter
宣传自己使用 UTF-16。虽然很容易修复:
public class Utf8StringWriter : StringWriter
{
public override Encoding Encoding { get { return Encoding.UTF8; } }
}
在您的特定情况下,这应该足够了。一个更全面的实现将:
- 具有与
StringWriter
相匹配的构造器 - 也允许在构造函数中指定编码
关于c# - 为什么 Xdocument 给我一个 utf16 声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248400/