• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Japanische Zeichen mit Java

  • Ersteller Mitglied 7974
  • Erstellt am

Mitglied 7974

Gast
Hi!

Und noch eine Java-Frage: Wie kann ich japanische Zeichen in eine Datei schreiben und von dort auch wieder korrekt auslesen?

Mein Programm nimmt per JTextField japanische Zeichen an und solange ich diesen String im Hauptspeicher lasse, hat Java keine Probleme damit, japanische Zeichen wiederzugeben.

Wenn ich die Zeichen allerdings in einer Datei zwischenspeichere, um sie zu einem späteren Zeitpunkt wieder auszulesen, wird mir zum einen in der Datei als dann auch in Java nur ein Fragezeichen '?' pro Zeichen angezeigt.

Was muss ich an Java oder dem System umkonfigurieren, damit sich japanische Zeichen in einer Datei speichern und wieder auslesen lassen?

Danke und Gruß,
Matthias
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Wie hast Du die Datei genau erstellt? Hast Du z.B. beim OutputStreamWriter das Charset UTF-8 (oder ähnliches) angegeben?
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
Ich nehme an, die Dateikodierung ist dann UTF-8?
Falls ja, verwendest du auch folgendes zum Wiederauslesen?

Code:
Reader in = new InputStreamReader(new FileInputStream("datei"), "UTF-8"));
 

Mitglied 7974

Gast
Ich schreibe normalerweise folgendermaßen in eine Datei (auf den try-catch-Block verzichte ich hier):
Code:
File file = new File("testdatei);
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write("irgendwas");
// oder auch
// writer.append("irgendwas");
writer.newLine();
writer.close();

Ich schau mir mal in der API die Objekte an, die ihr mir gesagt habt. Das bringt mich vielleicht schon weiter. Danke!
 

Mitglied 7974

Gast
Super! Danke, so funktioniert's 1A! Ich mach's jetzt so (wieder ohne try-catch-Blöcke):

Code:
File file = new File("dingens");
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
writer.append("irgendwas");
writer.close();
BufferedReader reader = new BufferedReader(
                                     new InputStreamReader(
                                       new FileInputStream(file), "UTF-8"));
while (reader.ready()) {
  String line = reader.nextLine().trim();
  // irgendwas mit line anstellen
}
reader.close();
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Ohne einen OutputStreamWriter wird das nicht gehen. BufferedWriter ist ein reiner Bytestream und kennt keine Kodierung durch "Charsets".

Edith: :)