Tician Geschrieben 23. Oktober 2017 Teilen Geschrieben 23. Oktober 2017 Hallöööchen mit 3 öchen, Mit meinem C# programm lese ich XML-Dateien aus. Damals hätte ich einen StreamReader genommen und mit Regex ausgelesen, seit geraumer Zeit benutze ich aber die angebotenen XML-Klassen. Das Problem: Die XML-Datei hat keinen Header der die Codierung angibt - zudem habe ich darauf auch keinen EInfluss, die Anforderung ist also ohne auszukommen. Die Datei selbst beinhaltet norwegische, dänische und schwedische Zeichen - und eines davon (vielleicht auch mehrere) bringt mein Programm dazu mit einer Exception zu beenden: System.Xml.XmlException: Ungültiges Zeichen in der angegebenen Codierung Der relevante Code sieht so aus: string[] files = Directory.GetFiles(stringSource, "*.xml"); if (files.Length != 0) { using (StreamWriter sw = new StreamWriter(destinationPath)) { foreach (object file in files) { name = Convert.ToString(file); //Read XML, get Nodes XmlDocument doc = new XmlDocument(); doc.Load(name); //hier Exception Das angemeckerte Zeichen: å Ich habe gesehen das andere das wohl irgendwie in einen StreamReader packen - aber verstanden habe ich es nicht wirklich. Außerdem weiß ich überhaupt nicht welchen Zeichensatz ich brauche. Habt ihr Ideen oder Lösungen? Grüße Tician Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thereisnospace Geschrieben 23. Oktober 2017 Teilen Geschrieben 23. Oktober 2017 (bearbeitet) using (StreamReader oReader = new StreamReader(name, Encoding.GetEncoding("ISO-8859-1"))) { doc = XDocument.Load(oReader); } Bei der Load Methode von der XmlDocument kannst du leider keinen Parameter zum Zeichensatz mitgeben. Der Streamreader kann es aber (über den 2. Parameter kannst du jeden beliebigen unterstützten Zeichensatz eingeben, in deinem Beispiel sollte der ISO-8859-1 passend sein). Welcher Zeichensatz was unterstützt kannst du hier nachlesen Klick mich Bearbeitet 23. Oktober 2017 von Gottlike Tician reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 23. Oktober 2017 Teilen Geschrieben 23. Oktober 2017 Der Grund für die Exception ist, dass load(string uri) intern einen XmlTextReader instanziiert. Der schaut nach, ob die Encoding-Deklaration vorhanden ist. Falls nicht, wird standardmäßig UTF-8 als Encoding gewählt. Der XmlTextReader versucht daraufhin die Zeichen zu interpretieren und fällt bei dem å auf die Nase, weil die Datei nicht UTF-8 kodiert ist. Der StreamReader ist auch nichts anderes, als ein TextReader, von daher kann auch dieser genommen werden, wie @Gottlike schon schrieb. Tician reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tician Geschrieben 23. Oktober 2017 Autor Teilen Geschrieben 23. Oktober 2017 Funktioniert einwandfrei, vielen Dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.