Entwickler-Ecke
IO, XML und Registry - Encoding Problem beim einlesen einer Xml-File
bfmeb - Mi 29.07.09 09:27
Titel: Encoding Problem beim einlesen einer Xml-File
Hallo!
Ich habe das Problem das Sonderzeichen nicht korrekt angezeigt werden. Ich lese eine Xml-Datei ein mittels XmlWriter und schreibe eine neue Xml-Datei. Das Encoding beim schreiben ist Encoding.Default, also UTF-8. Beim einlesen der Xml-Datei (ausgangsencoding: iso-8859-15) wird das Encoding mit meiner Methode nicht korrekt geändert.
Hier die Methode die das Encoding beim einlesen von iso-8859-15 in UTF-16 ändern soll.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private static void EncodeText(ref string xml) { XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); if (doc.FirstChild.NodeType == XmlNodeType.XmlDeclaration) { XmlDeclaration xmlDeclaration = (XmlDeclaration)doc.FirstChild; xmlDeclaration.Encoding = "UTF-16"; } xml = doc.OuterXml; } |
Wenn ich im Einzelschritt durch die Methode springe wird die Declaration geändert und es steht danach encoding = UTF-16 da. Nur ändert das leider nicht das Problem mit den Sonderzeichen. Hängt das damit zusammen das ich nur quasi nen string ersetze und garnicht neu codiert wird?
Verstehe das nicht ganz, bitte um Hilfe!
Danke vielmals im Vorraus.
--Entschuldigung vielmals, das gehört natürlich in die Kategorie IO, XML und Registry, bite verschieben--
Moderiert von
Kha: Topic aus WinForms verschoben am Mi 29.07.2009 um 10:23
Kha - Mi 29.07.09 10:26
Öhm... warum willst du das Encoding beim Einlesen überhaupt ändern :nixweiss: ? Du liest es in iso-8859-15 ein, beim Zugriff per XmlDocument bekommst du .NET-UTF-16-Strings zurück und schreibst sie in deine UTF-8-XML.
bfmeb - Mi 29.07.09 10:32
Zitat: |
Öhm... warum willst du das Encoding beim Einlesen überhaupt ändern :nixweiss: ? |
Na weil die Sonderzeichen nicht korrekt angezeigt werden. Ich habe keinen anderen Lösungsansatz finden könne, hat hier jemand eine andere Idee?
Wie schon gesagt habe ich bereits das Encoding bei der Serialisierung des Objektes in einen String auf Default gesetzt.
Irgendwelche Möglichkeiten?
Danke Vielamls im Vorraus, MFG bfmeb.
Kha - Mi 29.07.09 10:49
Naja, es
sollte eben genau so funktionieren. Ist die Datei auch wirklich als Latin-9 gespeichert?
Hier mal ein kleiner Test mit der Datei im Anhang:
C#-Quelltext
1: 2:
| csharp> XElement.Load(@"C:\Users\Kha\Documents\Visual Studio 2008\Projects\XMLFile1.xml"); <foo>aäß</foo> |
bfmeb - Mi 29.07.09 11:09
Okay, also das wird richtig angezeigt, das funktioniert soweit.
Zitat: |
Ist die Datei auch wirklich als Latin-9 gespeichert? |
Die Ausgangsdatei liegt mit dem Encoding Latin-9 (ISO-8859-15) vor. In der Ausgangs Xml-Datei wird ja auch alles korrekt angezeigt.
Ich konvertiere mit meinen Tool die Struktur eines Xml-Dokuments. Das konvertierte Xml-Dokument hat dann Encoding UTF-8 ohne korrekte Anzeige von Sonderzeichen. Deswegen dachte ich, dass beim schreiben/lesen irgendwas nicht korrekt gesetzt wird.
Trotzdem danke vielmals für deine Hilfe
...zum Verständnis nochmal:
Beim Lesen einer Xml Datei werden Sonderzeichen nicht korrekt angezeigt.
Es muss ein entsprechendes Encoding stattfinden.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!