• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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: :)