Web*_*ech 5 c# xml encoding xmlwriter utf-8
我正在使用C#输出一个xml文件,我试图将xml编码值设置为UTF-8,但它当前正在输出:
<?xml version="1.0"?>
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
一定是简单的我错过了吗?
dbc*_*dbc 13
您的代码无法编译 - StringWriterWithEncoding
没有无参数构造函数.或者,如果它确实有一个无参数构造函数,也许它实际上看起来像这样?
public sealed class StringWriterWithEncoding : StringWriter
{
private readonly Encoding encoding;
public StringWriterWithEncoding() { }
public StringWriterWithEncoding(Encoding encoding)
{
this.encoding = encoding;
}
public override Encoding Encoding
{
get { return encoding; }
}
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,那将解释您的问题 - 该字段encoding
已保留其默认值(null),即Encoding
返回null,因此XML文件中不会出现任何编码.
要修复它,删除无参数构造函数,并执行:
var sw = new StringWriterWithEncoding(Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)
或者将无参数构造函数更改为显式设置Encoding.UTF8
:
public sealed class StringWriterWithEncoding : StringWriter
{
private readonly Encoding encoding;
public StringWriterWithEncoding() : this(Encoding.UTF8) { }
public StringWriterWithEncoding(Encoding encoding)
{
this.encoding = encoding;
}
public override Encoding Encoding
{
get { return encoding; }
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15774 次 |
最近记录: |