Axel Richter: Textcodierung.. es ist zum Haareausraufen

Beitrag lesen

Hallo,

Weil ich verschiedene Schriftsätze benutze, maskiere ich meine Texte und speichere reine Ascii daten. So sieht das dann aus:\u308f\u305f\u3057
Wenn ich es z.B. so ein ein JLabel schreibe, dann wird es auch korreckt interpretiert und ich bekomme die gewünschten Zeichen zu sehen.
Wenn ich aber die Daten aus der Textdatei auslese und dann in das JLabelpacke, dann werden die Zeichen auch geneu so wiedergegeben, wie ich sie in der datei stehen hatte. Aber in der String Variablen müsste doch genau das gleiche stehen wie vorher, alsich es direkt in die Variable geschrieben habe. Warum werden die Zeichen nicht mehr interpretiert?? Das entzieht sich völlig meinem Verständnis.

Wie entsteht die Textdatei? Wie liest Du die Textdatei aus?

So sollte sie entstehen:
http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataOutputStream.html
writeUTF(java.lang.String)

So solltest Du sie auslesen:
http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInputStream.html
readUTF()

import java.io.*;

class UTFWriteRead {
    public static void main(String[] args) {
        FileOutputStream file_out;
        DataOutputStream data_out;
        FileInputStream file_in;
        DataInputStream data_in;

try {
            file_out = new FileOutputStream("test.txt");
            data_out = new DataOutputStream(file_out);

String c = "abc";
            String d = "\u308f\u305f\u3057";
            data_out.writeUTF(c);
            data_out.writeUTF(d);
            data_out.flush();
            data_out.close();
        } catch (IOException e) {
            System.out.println(e);
        }

try {
            file_in = new FileInputStream("test.txt");
            data_in = new DataInputStream(file_in);

String str = data_in.readUTF();
            System.out.println("UTF String" + str);
            str = data_in.readUTF();
            System.out.println("UTF String" + str);
        } catch (IOException e) {
            System.out.println(e);
        }

}
}

viele Grüße

Axel