Estoy creando un XDocument así:¿por qué el Xdocument me da una declaración utf16?
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"));
al guardar el documento como este (doc.Save(@"c:\tijd\file2.xml");
), me sale esto:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
que está bien.
pero quiero devolver el contenido como XML, y me encontré con el siguiente código:
var wr = new StringWriter();
doc.Save(wr);
string s = (wr.GetStringBuilder().ToString());
funciona este código, pero luego la cadena 's' comienza con esto:
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
así que cambió de utf8 a utf16, y eso no es lo que quiero, porque ahora no puedo leerlo en Internet Explorer.
¿Hay alguna manera de evitar este comportamiento?
Hay una bandera roja grande aquí, el escritor cadena realmente contiene una cadena UTF-16 codificada. Incluso si anula la propiedad Codificación. ¿Cómo pasa esto de StringWriter a IE? –
Buena pregunta. Guardo la cadena 's' en un archivo con File.WriteAllText y luego la abro con IE. No especifiqué eso muy claramente en mi pregunta ... – Michel
Correcto, la llamada File.WriteAllText() es la que * realmente * determina la codificación. El valor predeterminado es utf-8 a menos que use la sobrecarga que toma una Codificación. –