Le code suivant produit cette sortie: Comment puis-je obtenir pour produire coding = "utf-8" code> au lieu de
au lieu de
Encodage = "utf-16" code>? strong> p>
3 Réponses :
Permettez-moi de répondre à ma propre question, cela semble fonctionner:
Semble être un bug dans l'API pour moi que le sérialiseur ignore cette valeur dans votre xDeclaration code>.
@Kirkwoll Pas vraiment, car le codage par défaut pour XML est UTF8 afin qu'il puisse être omis. Par conséquent, il pose la question de savoir pourquoi la nécessité d'écrire explicitement UTF-8. Le problème était probablement de l'UTF-16 étant là, pas qu'il n'y avait pas UTF-8.
Voir aussi thread Comment imprimer Xml version = "1.0"?> Code> Utilisation
. xdocument code >
Ce n'est pas un bogue dans .NET. Ceci est dû à vous en utilisant Pour plus d'informations, voir INFORMATIONS MSDN sur Cette propriété est nécessaire pour certains scénarios XML où un en-tête doit être écrit contenant le codage utilisé par le StringWriter. Cela permet au code XML de consommer un stritter arbitraire et de générer l'en-tête XML correct. P>
blockQuote> StringWriter code> comme cible de votre xdocument. Étant donné que StringWriter utilise en interne UTF-16, le document doit également utiliser UTF-16 comme encodage. Si vous enregistrez le XDOC à un flux ou à un fichier, il utilisera UTF-8 comme indiqué. P>
StringWriter.Encoding Code>
: P>
Vous pouvez utiliser le code suivant comme exemple
XDocument doc = GetXmlDoc(); using (var stream = new MemoryStream()) { doc.Save(stream, SaveOptions.DisableFormatting); var docBytes = stream.ToArray(); File.WriteAllBytes("fileName.xml", docBytes); }