Your code does not compile - StringWriterWithEncoding does not have a constructor without parameters. Or, if it has a constructor without parameters, maybe it looks like this?
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; } } }
If so, this will explain your problem - the encoding field encoding left by default (null), which means that encoding returns null and therefore the encoding will not be displayed in the XML file.
To fix this, exclude the constructor without parameters and execute:
var sw = new StringWriterWithEncoding(Encoding.UTF8);
Or change the constructor without parameters to explicitly set 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; } } }
source share