Umlaute in XStream

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Morgen!

Weiß jemand, wie ich mit XStream Umlaute in Textfeldern serialisiere? Erhalte nämlich beim Deserialisieren anstelle der Sonderzeichen nur Kreise oder Dreiecke.

Danke im Vorraus
 
G

Gast

Gast
XStream generiert keinen Header für die XML Datei in dem die Art der Codierung beschrieben wird. Für Umlaute braucht man die ISO-8859-1 als encoding. Das Ganze sieht dann so aus:

"<?xml version="1.0" encoding="ISO-8859-1"?>"

Diese Zeile muss an den Anfang der XML Datei:

Code:
.....
String url = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"
......

try {
	FileOutputStream fos = new FileOutputStream ("Datei.xml");
	PrintWriter writer = new PrintWriter (new OutputStreamWriter (fos, "ISO-8859-1"), true);
	writer.println(url);
	xstream.toXML (JTextField, fos);
	
			
	} catch (IOException e1) {
		e1.printStackTrace(); }

Die Deserialisierung funktioniert wie gewohnt:

Code:
try {
FileInputStream fis = new FileInputStream(Datei.xml);
xstream.fromXML (JTextField, fis);
} catch (IOException e) { e.printStackTrace();};
 
C

CBoxDD

Gast
So ganz war das oben aber nicht richtig!!!

Es sollte der PrintWriter und nicht der FileOutputStream dem XStream übergeben werden.

Java:
String enc = "UTF-8";
    FileOutputStream fos;    
      fos = new FileOutputStream (xmlFile);    
    PrintWriter writer = new PrintWriter(new OutputStreamWriter (fos,enc), true);
    writer.println("<?xml version=\"1.0\" encoding=\""+enc+"\"?>");
    xs.toXML (invImp, writer);

Dann klappt's auch mit dem Ergebnis in UTF-8 (oder sonstwas)

hth
C-Box
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben