UTF-8 in Datei speichern

Terrance & Philipp

Erfahrenes Mitglied
Hallo Zusammen!

Ich versuche mit folgendem Code UTF-8 in eine Datei zu schreiben. Mein Problem ist, dass statt UTF-8 immer UTF-16 geschrieben wird, also alle Zeichen (auch ASCII) aus 2 Bytes bestehen und am Anfang der Datei ein byter-order marker geschrieben wird.

Kann mir jemand sagen wie ich in jedem Fall UTF-8 Text ohne byte-order marker schreiben kann? (Es hat schon einmal funktioniert. Ich bekomme es aber nichtmehr hin.)

Code:
FileOutputStream fos = new FileOutputStream("data", true);
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
osw.write("Mein UTF Wort");
osw.flush();
osw.close();

Grüsse
Michael
 
Sollte eigentlich funktionieren. Kannst du mal mit osw.getEncoding überprüfen welches Encoding er hat?
Ausserdem kannst du noch diese Probieren:
Code:
OutputStreamWriter osw = new OutputStreamWriter(fos, java.nio.charset.Charset.forName("UTF-8"));
 
Die Änderung hat nichts geholfen.

Wenn ich getEncoding() ausgebe bekomme ich UTF8. Ich kann mir nicht erklären wieso das er UTF16 in die Datei schreibt.

Hat jemand irgendeine Idee?

Danke euch!

Grüsse
Michael
 
FF FE 77 00 61 00 6C 00 6C 00 6F 00 00 00 72 00 61 00 6C 00 6C 00 6F 00 00 00 30 05 00 00

Das entspricht einem byte-order marker (FF FE) danach wallo\0rallo(Unicode character \u3005)\0 .

Mein gewünschter Output wäre folgender:
77 61 6C 6C 6F 00 72 61 6C 6C 6F 00 30 05 00

Also das alle ASCII Zeichen nur ein Byte benützen und das/die Unciode Zeichen 2 Bytes.

Ich danke für jede Antwort.

Grüsse
Michael
 
Zurück