Sto creando un XDocument come questo:perché Xdocument mi fornisce una dichiarazione utf16?
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"));
quando salvo il documento come questo (doc.Save(@"c:\tijd\file2.xml");
), ottengo questo:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
che è ok.
ma voglio restituire il contenuto in formato XML, e ho trovato il seguente codice:
var wr = new StringWriter();
doc.Save(wr);
string s = (wr.GetStringBuilder().ToString());
questo codice funziona, ma poi '' s la stringa inizia con questo:
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
quindi è passato da utf8 a utf16, e non è quello che voglio, perché ora non riesco a leggerlo in internet explorer.
C'è un modo per prevenire questo comportamento?
C'è una Red Flag Big qui, lo scrittore stringa fa davvero contenere una stringa UTF-16 codificato. Anche se si esegue l'override della proprietà Encoding. Come ottiene questo da StringWriter in IE? –
Buona domanda. Salvare la stringa 's' in un file con File.WriteAllText e quindi aprirlo con IE. Non ho specificato che chiaramente nella mia domanda ... – Michel
Esatto, la chiamata File.WriteAllText() è quella che * veramente * determina la codifica. Il valore predefinito è utf-8 a meno che non si utilizzi il sovraccarico che richiede una codifica. –