1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Japanische Zeichen mit Java

Dieses Thema im Forum "OS X-Developer" wurde erstellt von snoopysalive, 05.07.07.

  1. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    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
     
  2. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Wie hast Du die Datei genau erstellt? Hast Du z.B. beim OutputStreamWriter das Charset UTF-8 (oder ähnliches) angegeben?
     
  3. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    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"));
    
     
  4. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    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!
     
  5. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    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();
    
     
  6. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Ohne einen OutputStreamWriter wird das nicht gehen. BufferedWriter ist ein reiner Bytestream und kennt keine Kodierung durch "Charsets".

    Edith: :)
     

Diese Seite empfehlen