# Umlaute in XStream



## Gast (9. Jun 2008)

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


----------



## Gast (9. Jun 2008)

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:


```
.....
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:


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


----------



## CBoxDD (18. Dez 2009)

So ganz war das oben aber nicht richtig!!!

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


```
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


----------

