Benutzer mit den meisten Antworten
XElement Kodierung setzen

Frage
-
Hi,
wie kann ich bitte beim Speichern von einem XElement die Kodierung setzen?
Aktuell wird diese immer auf utf-8 gesetzt (<?xml version="1.0" encoding="utf-8"?>).
Ich müsste diese jedoch auf auf iso-8859-1 setzen (<?xml version="1.0" encoding="iso-8859-1"?>).Wie mache ich dies bitte?
Danke
Christian
Antworten
-
Hallo, das geht mithilfe eines XDeclaration:
XDocument doc = new XDocument( new XDeclaration("1.0", "iso-8859-1", "yes"), new XElement("Root", "Content") ); doc.Save("C:\\EncodedUtf16.xml");
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
Einen Konverter zwischen C# und VB.NET Code gibt es hier.- Bearbeitet Tom Lambert (Koopakiller)Moderator Montag, 13. Mai 2013 15:42 Code abgeändert
- Als Antwort vorgeschlagen Elmar BoyeEditor Montag, 13. Mai 2013 16:34
- Als Antwort markiert Christian315 Dienstag, 14. Mai 2013 06:43
Alle Antworten
-
Hallo, das geht mithilfe eines XDeclaration:
XDocument doc = new XDocument( new XDeclaration("1.0", "iso-8859-1", "yes"), new XElement("Root", "Content") ); doc.Save("C:\\EncodedUtf16.xml");
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
Einen Konverter zwischen C# und VB.NET Code gibt es hier.- Bearbeitet Tom Lambert (Koopakiller)Moderator Montag, 13. Mai 2013 15:42 Code abgeändert
- Als Antwort vorgeschlagen Elmar BoyeEditor Montag, 13. Mai 2013 16:34
- Als Antwort markiert Christian315 Dienstag, 14. Mai 2013 06:43
-
Hi,
vielen Dank für den Hinweis.
Dieser Ansatz soll angeblich nicht funktionieren, ich habe es aber noch nicht ausprobiert:
Viele Grüße
Christian -
Hallo Christian,
die erste Antwort im StackOverflow Artikel stimmt so nicht.
Zum einen ist ISO885-1 ebenfalls ein (8-bit / Latin-1) Encoding:
Encoding iso8859_1 = Encoding.GetEncoding("iso-8859-1");
Beachten muss man, dass Linq To Xml "schlau" ist: Versucht man das Ganze in einen StringWriter zu schreiben, so wird die Encoding Angabe ignoriert, da ein .NET String immer Unicode (UTF-16) ist. Und die dann falsche Angabe lässt Linq To Xml nicht zu.
Wenn Du das Ganze in eine Datei via Save speicherst, wird das Encoding berücksichtigt.
Verwendest Du einen StreamWriter/TextWriter so sollte das Encoding entsprechend angeben werden. Sinnvoll ist es XmlWriter.Create mit den XmlWriterSettings das Encoding festzulegen.
Gruß Elmar