【发布时间】:2017-03-03 15:56:19
【问题描述】:
我正在使用 C# 输出一个 xml 文件,我试图将 xml 编码值设置为 UTF-8,但它当前正在输出:
<?xml version="1.0"?>
这是我的代码:
public sealed class StringWriterWithEncoding: StringWriter {
private readonly Encoding encoding;
public StringWriterWithEncoding(Encoding encoding) {
this.encoding = encoding;
}
public override Encoding Encoding {
get {
return encoding;
}
}
}
private string GetXml(JobStore jobStore) {
StringWriterWithEncoding sw = new StringWriterWithEncoding();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.Encoding = Encoding.GetEncoding("utf-8");
settings.Indent = true;
using(var writer = XmlWriter.Create(sw, settings)) {
writer.WriteStartDocument();
writer.WriteStartElement("resources");
writer.WriteStartElement("string");
writer.WriteAttributeString("name");
writer.WriteCData("value");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
}
return sw.ToString();
}
一定是我缺少的一些简单的东西吗?
【问题讨论】:
-
你能在 .NETFiddle 上分享你的代码吗?
-
Utf8StringWriterfrom this answer 应该可以工作。 -
您的代码无法编译 --
StringWriterWithEncoding没有无参数构造函数。或者,也许您实际使用的版本确实有一个无参数构造函数,它将encoding保留为其默认(null)值,这意味着Encoding返回null?这可以解释你的问题。无论如何,如果我这样做StringWriterWithEncoding sw = new StringWriterWithEncoding(Encoding.UTF8);一切正常。示例fiddle. -
救命稻草!谢谢百万人!
-
请不要养成在您的问题中添加“尽快”乞求的习惯——我们社区的志愿者will answer at leisure。谢谢!
标签: c# xml encoding utf-8 xmlwriter