我使用C#輸出XML文件,我試着去設置的XML編碼值UTF-8,但其目前輸出:的XmlWriter編碼UTF-8在C#中使用的StringWriter
<?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分享您的代碼? – aloisdg
來自[此回答](Utf8StringWriter)(https://stackoverflow.com/questions/955611/xmlwriter-to-write-to-a-string-instead-of-to-a-file/955698#955698)應該工作。 – dbc
你的代碼不能編譯 - 'StringWriterWithEncoding'沒有無參數的構造函數。或者,也許你的版本實際上有一個無參數的構造函數,它將'encoding'保留在其默認值(空值),這意味着'Encoding'返回null?這將解釋你的問題。無論如何,如果我做'StringWriterWithEncoding sw = new StringWriterWithEncoding(Encoding.UTF8);'一切工作正常。示例[fiddle](https://dotnetfiddle.net/JxACgB)。 – dbc