# Mac OS JRE verhunst Umlaute



## Skalarprodukt (28. Aug 2009)

Hallo,

habe ein kleines Programm geschrieben, dass Daten marshalisiert (in ein XML serialisiert). Ich nutzte ISO-8859-1 (UTF-8 hatte ich davor, aber gleiches Problem). Wenn ich die Applikation über Eclipse (Mac & Win) starte, habe ich keine Probleme.
Auch auf den JREs von mehreren Windowskisten werden die Umlaute korrekt marshalisiert.

Einzig und allein die JRE, von Mac OS X aus gestartet, macht aus den Umlauten kryptische Dinge. Lustigerweise auch nachdem ich die Default-JRE von der 5er auf eine 6er umgestellt habe.

Weiß jemand Rat?


----------



## Wildcard (28. Aug 2009)

Wie speicherst du die Datei und wie übergibst du das Encoding?


----------



## Skalarprodukt (29. Aug 2009)

Ich serialisiere die Objekte mittels JAXB in ein xml Dokumente. Das Encoding geb ich JAXB gleich mit.

```
JAXBContext context;
        Writer writer = null;
        try {
            context = JAXBContext.newInstance(VocList.class);

            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
            //marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");

            writer = new FileWriter(pSelectedFile);

            marshaller.marshal(_vocList, writer);

        }
```


----------



## Skalarprodukt (29. Aug 2009)

Ich serialisiere die Objekte mittels JAXB in ein xml Dokument. Das Encoding geb ich JAXB gleich mit.

```
JAXBContext context;
        Writer writer = null;
        try {
            context = JAXBContext.newInstance(VocList.class);

            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            marshaller.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
            //marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");

            writer = new FileWriter(pSelectedFile);

            marshaller.marshal(_vocList, writer);

        }
```

Wie gesagt unter Eclipse gehts auf beiden OS'. Und unter den den Windows JREs auch. Nur bei Mac irgendwie nicht.


----------



## Wildcard (29. Aug 2009)

Wie verifizierst du denn das es 'nicht geht'? Vielleicht stimmt einfach deine Anzeige nicht?
Im übrigen Schreibst du selbst mit einem FileWriter, setzt dort aber nicht explizit ein Encoding. Der Stream wird also (egal was JAXB in den XML Header schreibt) im Default Encoding der Platform geschrieben. Was ist das Default Encoding der Platform?


----------



## Wortraum (30. Aug 2009)

Ein FileWriter nimmt immer die Standardkodierung des Systems. Ich kenne den Marshaller nicht gut, aber probiere mal, das ganze über einen OutputStreamWriter zu machen:

```
FileOutputStream out = new FileOutputStream(pSelectedFile);
    OutputStreamWriter writer = new OutputStreamWriter(out, "UTF-8");
    marshaller.marshal(_vocList, writer);
```


----------



## Skalarprodukt (30. Aug 2009)

Das wars, vielen Dank euch beiden!


----------

