Unicode Problem
-
Hallo,
Ich habe ein Zeichencodierungsproblem:
System.out.println("魚");
gibt nicht 魚, sondern ? aus.
Mittels
System.setOut( new java.io.PrintStream(new java.io.FileOutputStream( java.io.FileDescriptor.out ), false, "UTF-16" ));
habe ich versucht, klarzumachen, dass ich utf-16 (ist dies überhaupt richtig?) verwenden will. Aber danach ist die Ausgabe absolut falsch, so wird z.B. ein syso("sdf"); unlesbar.
An was könnte das liegen?
Danke für Hinweise!
-
javaabc schrieb:
gibt nicht ?, sondern ? aus.
???
-
Zeichensatzsetzer schrieb:
javaabc schrieb:
gibt nicht ?, sondern ? aus.
???
Also ich sehe auf meinem Browser schon das richtige chiniesische
Schriftzeichen; frage mich aber wie er das in dieses Forum überhaupt
eingegeben hat.Zur ursprünglichen Fragestellung:
Auf der Konsole hast du nur einen Font der chinesische Schriftzeichen
nicht darstellen kann.
-
Javaner schrieb:
Also ich sehe auf meinem Browser schon das richtige chiniesische
Schriftzeichen; frage mich aber wie er das in dieses Forum überhaupt
eingegeben hat.Zur ursprünglichen Fragestellung:
Auf der Konsole hast du nur einen Font der chinesische Schriftzeichen
nicht darstellen kann.Auch wenn ich ein JLabel("名前") erstelle, steht ?? anstelle des Zeichens im JLabel
btw. kann man das Zeichen mittels umstellen der Eingabesprache auf Japanisch (od. Chinesisch) ganz einfach hier eingeben:)
-
Dann mußt du dem JLabel einen Font verpassen (setFont(...)) der
diese Zeichen darstellen kann.Frag mich jetzt aber nicht, welche Fonts das können. Probier einfach alle
aus.
-
Javaner schrieb:
Dann mußt du dem JLabel einen Font verpassen (setFont(...)) der
diese Zeichen darstellen kann.Frag mich jetzt aber nicht, welche Fonts das können. Probier einfach alle
aus.ich hab jetzt
JLabel fisch = new JLabel("名前");
fisch.setFont(new Font("MS Minicho", Font.BOLD, 30));
gesetzt, aber immer noch nur ?? als Ausgabe
MS Minicho ist die Schriftart, die bei Word bei der Eingabe von Jap. Zeichen verwendet wird.
-
Vielleicht zerstört dein Editor/IDE die Sonderzeichen schon im Quellcode? Was verwendest du, und wie ist die Encoding eingestellt?
Du kannst auch mal versuchen den Unicode Character über seinen Hexwert einzuügen, evtl. klappt das?
-
aaalso ein kleiner fortschritt hat sich durch das direkte eingeben des unicodes ergeben:) mittels
b = new StringBuffer();
b.append('\u569e');und dann label.settext(b) wird jetzt ein zeichen korrekt angezeigt!
scheint so, dass eclipse mir das zeichen beim speichern wirklich zerstört... mal gucken, was man da so einstellen kann.
aber das hauptproblem ist, dass ich eigentlich von einer datei einlesen können sollte... ich habe unter xp eine datei japanisches.txt erstellt und ein zeichen hineingeschrieben.BufferedReader in = new BufferedReader(new FileReader("japanisches.txt"));
String s = in.readLine();nach label.settext(s) erscheinen jetzt zwar keine fragezeichen mehr, dafür aber anderes wirres zeugs. beim texteditor kann ich zwischen unicode, unicode big endian und utf-8 unterscheiden... habe alles ausprobiert und verschiedene resultate erhalten; das gewünschte zeichen erscheint aber bei keiner der varianten.
was möchte java denn genau für ein format haben von dieser textdatei? ich dachte unicode big endian wäre ok, scheinbar aber nicht. oder macht windows irgendwas falsch?