XML in Java String einlesen
Marco
- xml
Hallo zusammen,
ich stehe vor folgendem Problem:
Ich habe ein XML-Dokument welches unter anderem ein tag mit einem µ Zeichen enthält (<unit>µg</unit>). Dieses Zeichen möchte ich in Java auslesen um es anschließend in eine Datenbank zu schreiben. Sobald ich das Dokument parse und den Inhalt einem String zuweise wird das µ in ┬Á umgewandelt.
Gibt es eine Möglichkeit diese Umwandlung zu umgehen bzw. sie rückgängig zu machen?
Vielen Dank vorab & Gruß,
Marco
Hallo,
Ich habe ein XML-Dokument welches unter anderem ein tag mit einem µ Zeichen enthält (<unit>µg</unit>). Dieses Zeichen möchte ich in Java auslesen um es anschließend in eine Datenbank zu schreiben. Sobald ich das Dokument parse und den Inhalt einem String zuweise wird das µ in ┬Á umgewandelt.
woher bist Du Dir sicher, dass das Zeichen bei der Stringzuweisung umgewandelt wird. Wie erfolgt denn die Ausgabe und welche Charsets haben die xml-Datei und die Ausgabe?
Gruß
Olaf
woher bist Du Dir sicher, dass das Zeichen bei der Stringzuweisung umgewandelt wird. Wie erfolgt denn die Ausgabe und welche Charsets haben die xml-Datei und die Ausgabe?
Gruß
Olaf
Hallo,
die Datei sieht so aus:
<?xml version='1.0' encoding='utf-8'?>
<myDoc>
...
<unit>µg</unit>
...
</myDoc>
ich lese die Datei wie folgt aus:
...
System.out.println(readFileAsString("c:\myXML.xml"));
private static String readFileAsString(String filePath) throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(
new FileReader(filePath));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
return fileData.toString();
}
Als Ausgabe bekomme ich dann: ... <unit>┬Ág</unit> ...
Hallo Marco,
leider kann ich nur ein bisschen raten:
die Datei sieht so aus:
<?xml version='1.0' encoding='utf-8'?>
<myDoc>
...
<unit>µg</unit>
...
</myDoc>
Ich gehe mal davon aus, dass der Editor die Datei auch als utf-8 speichert und nicht als iso-sonstwas.
Als Ausgabe bekomme ich dann: ... <unit>┬Ág</unit> ...
Ausgabe wo: Per Swing in einem GUI-Element, per Konsole, auf dem Webbrowser?
Kann es sein, dass von vorne bis hinten alles utf-8 ist, aber das Ausgabegerät die Ausgabe als 8bit-Zeichensatz interpretiert und ausgibt? Das würde auch erklären, warum aus dem µ zwei Zeichen geworden sind.
Gruß
Olaf
Hallo Olaf,
Kann es sein, dass von vorne bis hinten alles utf-8 ist, aber das Ausgabegerät die Ausgabe als 8bit-Zeichensatz interpretiert und ausgibt? Das würde auch erklären, warum aus dem µ zwei Zeichen geworden sind.
Das wäre möglich, ist aber eher unwahrscheinlich. Java verwendet für IO standardmäßig den Systemzeichensatz. Das Problem dürfte eher sein, dass dieser eben nicht uft-8 ist und die Zeichen beim Einlesen als iso-* interpretiert werden. Ich würde also mal versuchen beim FileReader die Zeichenkodierung explizit anzugeben.
Grüße
Daniel