Medio Ambiente es VS2008, .Net 3.5.Net XmlWriter - codificación inesperada me está confundiendo
El siguiente código C# (tenga en cuenta la codificación especificada de UTF8)
XmlWriterSettings settings = new XmlWriterSettings();
StringBuilder sb = new StringBuilder();
settings.Encoding = System.Text.Encoding.UTF8;
settings.Indent = false;
settings.NewLineChars = "\n";
settings.ConformanceLevel = System.Xml.ConformanceLevel.Document;
XmlWriter writer = XmlWriter.Create (sb, settings);
{
// Write XML data.
writer.WriteStartElement ("CCHEADER");
writer.WriteAttributeString ("ProtocolVersion", "1.0.0");
writer.WriteAttributeString ("ServerCapabilities", "0x0000000F");
writer.WriteEndElement();
writer.Flush();
}
genera realidad el XML (> < omitidas porque SO barfs en ellos):
? xml version = "1.0" encoding = "utf-16"?
CCHEADER ProtocolVersion = "1.0.0" ServerCapabilities = "0x0000000F"/
¿Por qué aparece aquí la codificación incorrecta? Qué estoy haciendo mal ?
@Steven: Oh, no sé. La pregunta había estado activa durante aproximadamente 4 minutos. Eso cuenta como definitivamente obsoleto según los estándares SO ... –
Aha - siguió el enlace - usted es un MVP. Debería haber sabido. Pasé 8 años como MVP de WinSDK. Ese conocimiento se está volviendo rancio a medida que lucho con estas cosas manejadas. –
También tenga en cuenta que si deja que 'Encoding' devuelva' null' en su especialización 'StringWriter', entonces' XmlWriter' escribirá la declaración XML simplemente como ' Xml version =" 1.0 "?>', Es decir, sin ninguna codificación información en absoluto. Esta es una declaración XML perfectamente válida. Esto es útil si somos agnósticos sobre la codificación. –