XML umlaute in utf8 konvertieren

padkey

Mitglied
Hallo zusammen,

ich habe ein Problem... :-(

ich erhalte xml-Dateien, welche ich per Java-Agenten in Lotus Notes Dokumente transferiere.

Inhalt in der XML: ... Ośrodek ... --> wird zu: OÅ›rodek in Lotus Notes.
Normalerweise bräuchte ich Ośrodek im UTF8-Format, ist es aber leider nicht.

Code:
orderDoc = builder.parse(emo.getInputStream());

1. welches coding habe ich (windows system)
2. wie mache ich es in utf. ś ist natürlich nur ein beispiel. ist für alle umlaute usw.
 

partsch

Aktives Mitglied
Ich hatte ein ähnliches Problem vor ein par Wochen in einer .NET Anwendungen, dass ich das Encoding nicht wusste und es auch keins von den Standard-Encodings war die man so auf die schnelle fand :(

Aber zu der Frage wie du es in UTF8 bekommst:
Die Klasse String hat den Konstruktor
Java:
new String(byte[],String encoding)
Es müsste doch gehen
Java:
String stringInUTF8 = new String(string.getBytes("some_encoding"), "UTF8");

mfg Partsch

PS: ist es vielleicht cp1252?
 

padkey

Mitglied
Ich denke nicht, dass es CP1252 sein kann, weil wenn ich versuche:
Java:
System.out.println("Ośrodek");
bekomme ich von eclipse die Fehlermeldung, dass er Ośrodek nicht als CP152 speichern kann ...

Habe es leider immer nicht hinbekommen... hat jemand eine idee?

Kröner wird zu Kröner
 

padkey

Mitglied
so ich habe nun auch mal die String Lösung versucht:
Java:
System.out.println("Textnode: " + textNode.getData());
System.out.println("UTF-8 " + new String(textNode.getData().getBytes("UTF-8")) + " ISO-8859-1: " + new String(textNode.getData().getBytes("ISO-8859-1")));

macht folgende Ausgabe:

Code:
Textnode: Kröner
UTF-8 Kröner 
ISO-8859-1: Kröner

Daher denke ich, dass er schon die Sachen falsch einliest?!
Java:
EmbeddedObject emo = currDoc.getAttachment(file);

tw = ((DocumentTraversal)orderDoc).createTreeWalker((Node) builder.parse(emo.getInputSource()), NodeFilter.SHOW_ELEMENT, null, false);

Hat jemand eine idee, wie ich das angehen kann?
 

partsch

Aktives Mitglied
so ich habe nun auch mal die String Lösung versucht:
Java:
System.out.println("Textnode: " + textNode.getData());
System.out.println("UTF-8 " + new String(textNode.getData().getBytes("UTF-8")) + " ISO-8859-1: " + new String(textNode.getData().getBytes("ISO-8859-1")));

macht folgende Ausgabe:

Code:
Textnode: Kröner
UTF-8 Kröner 
ISO-8859-1: Kröner
So habe ich das auch nicht gemeint ... bei
Java:
textNode.getData().getBytes("some_encoding")
soll nicht UTF8 übergeben werden sondern das Encoding was der ausgelesene String eigentlich hat, erst im Konstruktor vom String übergibst du als zweiten Parameter das Encoding zu welchem der String konvertiert werden soll, bei dir eben UTF8.
 

Ähnliche Java Themen

Neue Themen


Oben