XML: Codierungsprobleme bei Umlauten
Verfasst: 2. August 2010 20:42
Hallo,
Es ist bekannt, dass gültige XML-Daten normalerweise UTF8-codiert gespeichert werden sollen. Erstelle ich ein Dom-Dokument 'doc', so wird es als UTF-8 gespeichert, wenn ich doc.toByteArray() in eine Datei speichere und mit dem aktuellen ISO-Zeichensatz (für XML eigentlich ungültig), wenn ich doc.toString() speichere - alles soweit korrekt.
Wenn es allerdings darum geht, die geschriebene XML-Datei wieder auszulesen, passiert Murks. Lese ich die Datei unter Windows ein, dann werden die in UTF-8 codierten Daten korrekt ausgelesen und in Strings umgesetzt, wie es auch sein sollte, während im Falle einer ISO-Codierung für die Sonderzeichen falsche Zeichen ausgelesen werden. Unter Linux hingegen habe ich bei ausgelesenen ISO-Daten korrekte Strings, während im Falle ausgelesener UTF-8 Daten in der Darstellung Codierungsfehler auftauchen (zwei Akzentzeichen für jedes Umlaut, kennt man).
Als Zwischenlösung wird doc.toString() unter Linux und doc.toByteArray() unter Windows in die Datei gespeichert, aber sauber ist diese Lösung ja nicht. Jemand eine Idee?
Es ist bekannt, dass gültige XML-Daten normalerweise UTF8-codiert gespeichert werden sollen. Erstelle ich ein Dom-Dokument 'doc', so wird es als UTF-8 gespeichert, wenn ich doc.toByteArray() in eine Datei speichere und mit dem aktuellen ISO-Zeichensatz (für XML eigentlich ungültig), wenn ich doc.toString() speichere - alles soweit korrekt.
Wenn es allerdings darum geht, die geschriebene XML-Datei wieder auszulesen, passiert Murks. Lese ich die Datei unter Windows ein, dann werden die in UTF-8 codierten Daten korrekt ausgelesen und in Strings umgesetzt, wie es auch sein sollte, während im Falle einer ISO-Codierung für die Sonderzeichen falsche Zeichen ausgelesen werden. Unter Linux hingegen habe ich bei ausgelesenen ISO-Daten korrekte Strings, während im Falle ausgelesener UTF-8 Daten in der Darstellung Codierungsfehler auftauchen (zwei Akzentzeichen für jedes Umlaut, kennt man).
Als Zwischenlösung wird doc.toString() unter Linux und doc.toByteArray() unter Windows in die Datei gespeichert, aber sauber ist diese Lösung ja nicht. Jemand eine Idee?