Wie fügt man in VB.NET 2003 einer XML-DataSet-Datei "encoding=..." hinzu?

Antwort vom

**Bei einem `DataSet` fügst du `encoding="..."` nicht nachträglich in die XML-Datei ein, sondern du schreibst die XML mit einem Writer, der die gewünschte Kodierung vorgibt.** `WriteXml("datei.xml")` allein reicht dafür oft nicht, weil du damit die Ausgabe weniger genau steuerst. ([learn.microsoft.com](https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data)) ## So geht es in VB.NET 2003 Für .NET 1.1 / VB.NET 2003 nimmst du am besten `XmlTextWriter` mit einer expliziten Encoding-Angabe: ```vb Imports System.Text Imports System.Xml Dim xw As New XmlTextWriter("daten.xml", Encoding.GetEncoding("iso-8859-1")) xw.Formatting = Formatting.Indented ds.WriteXml(xw) xw.Close() ``` Dann steht am Anfang der Datei typischerweise: ```xml <?xml version="1.0" encoding="iso-8859-1"> ``` Die Kodierung kommt also vom `XmlTextWriter`, nicht von einer Eigenschaft des `DataSet`. `DataSet.WriteXml` kann direkt in einen `XmlWriter` bzw. Writer schreiben. ([learn.microsoft.com](https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data)) ## Wichtiges Missverständnis Wenn du die Datei erst als normalen String oder mit einem `TextWriter` in einer anderen Kodierung erzeugst und danach nur `encoding="..."` in die erste Zeile schreibst, ist das **falsch**. Dann behauptet die XML-Datei nur eine Kodierung, ist aber tatsächlich anders gespeichert. Genau das führt später zu Umlaut- und Importfehlern. Die Deklaration muss zur echten Dateikodierung passen. ([learn.microsoft.com](https://learn.microsoft.com/en-us/dotnet/fundamentals/runtime-libraries/system-xml-xmlwriter)) ## Falls du auch das Schema mitschreiben willst Dann einfach: ```vb ds.WriteXml(xw, XmlWriteMode.WriteSchema) ``` `WriteXml` unterstützt verschiedene Ausgabemodi; die Encoding-Steuerung bleibt trotzdem Sache des Writers. ([learn.microsoft.com](https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data)) ## Praktisch am sichersten Wenn kein Fremdsystem ausdrücklich etwas anderes verlangt, nimm **UTF-8**: ```vb Dim xw As New XmlTextWriter("daten.xml", Encoding.UTF8) ds.WriteXml(xw) xw.Close() ``` Das ist robuster als alte ANSI-/ISO-Codepages, gerade bei Sonderzeichen. ([learn.microsoft.com](https://learn.microsoft.com/en-us/dotnet/fundamentals/runtime-libraries/system-xml-xmlwriter))

Kategorie: Technik Tags: VBNet Xml Encoding

Verwandte Fragen

Warum schmiert eine 680x1560-Pixel-Zeichnung in VB.NET 2003 beim Scrollen in den unteren 60 Pixeln?

Das „Schmieren“ unten ist sehr wahrscheinlich kein Größenlimit deiner 680×1560-Zeichnung, sondern ein Repaint-/Scroll-Problem: Beim Scrollen verschiebt Windows nur die vor...