Я использую 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();
}
Должно быть что-то простое, чего мне не хватает?
Utf8StringWriter
из этого ответа должно работать. - person dbc   schedule 03.03.2017StringWriterWithEncoding
не имеет конструктора без параметров. Или, может быть, ваша версия действительно имеет конструктор без параметров, который оставляетencoding
со значением по умолчанию (null), что означает, чтоEncoding
возвращает null? Это объяснило бы вашу проблему. В любом случае, если я сделаюStringWriterWithEncoding sw = new StringWriterWithEncoding(Encoding.UTF8);
, все будет работать правильно. Пример скрипки. - person dbc   schedule 03.03.2017