Hallo Community,
ich habe ein kleines Problem mit dem Umwandeln von Sonderzeichen.
Wenn ich Strings in meinem Code habe, gehe ich mit ExternalizeStrings darüber und erstelle mir auf diese Weise die Property-Files. Anschließend benutze ich den ResourceBundleEditor um die Texte nachhaltig zu pflegen. Wenn ich bei dieser Pflege Umlaute wie ä eingebe, macht er automatisch ein UTF-8 Zeichen draus ( \u00E4 ). Greife ich nachher auf diese zu, erhalte ich auf meinen Labels das richtige Zeichen.
So, nun zu meinem Problem:
Ich habe nun mehrere messages.properties, welche ich nun in eine CSV übertragen will, damit ein "Kunde" sich eine eigene Sprache hinzufuegen kann. Es soll also in einer csv zusammengefasst werden (die PackageStruktur zu den Keys merke ich mir natürlich).
Nun passiert folgendes:
Ich lese die Datei zeilenweise ein und in machen Zeilen ist ein Umlaut enthalten. Will ich mir diese Line ausgeben lassen, steht auf meiner console das codierte UTF-8 Zeichen, aber leider nicht der eigentliche Umlaut.
Erstelle ich im Programm manuell einen String mit einer UTF-8 Kodierung funktioniert es
Was mir auch aufgefallen ist:
Zum einlesen verwende ich folgendes
Was kann ich da machen?
ich habe ein kleines Problem mit dem Umwandeln von Sonderzeichen.
Wenn ich Strings in meinem Code habe, gehe ich mit ExternalizeStrings darüber und erstelle mir auf diese Weise die Property-Files. Anschließend benutze ich den ResourceBundleEditor um die Texte nachhaltig zu pflegen. Wenn ich bei dieser Pflege Umlaute wie ä eingebe, macht er automatisch ein UTF-8 Zeichen draus ( \u00E4 ). Greife ich nachher auf diese zu, erhalte ich auf meinen Labels das richtige Zeichen.
So, nun zu meinem Problem:
Ich habe nun mehrere messages.properties, welche ich nun in eine CSV übertragen will, damit ein "Kunde" sich eine eigene Sprache hinzufuegen kann. Es soll also in einer csv zusammengefasst werden (die PackageStruktur zu den Keys merke ich mir natürlich).
Nun passiert folgendes:
Ich lese die Datei zeilenweise ein und in machen Zeilen ist ein Umlaut enthalten. Will ich mir diese Line ausgeben lassen, steht auf meiner console das codierte UTF-8 Zeichen, aber leider nicht der eigentliche Umlaut.
Erstelle ich im Programm manuell einen String mit einer UTF-8 Kodierung funktioniert es
Java:
String line; // konmmt aus dem BufferedReader
PrintStream sysout = new PrintStream(System.out, true, "UTF-8");
sysout.println(line); // Ausgabe -> enth\u00E4lt
sysout.println("enth\u00E4lt"); // Ausgabe -> enthält
Was mir auch aufgefallen ist:
Java:
String line; // konmmt aus dem BufferedReader
String tmp = "enth\u00E4lt";
line.lenght(); // 12
tmp.length(); // 7
Zum einlesen verwende ich folgendes
Java:
Reader reader = new InputStreamReader(new FileInputStream(messageFile),"UTF-8");
BufferedReader br = new BufferedReader(reader);
String line = null;
while((line= br.readLine())!=null) {
// .....
}
br.close();
reader.close();
Was kann ich da machen?