2012-12-25 9 views
11

Ich verwende mein Java-Programm über die Befehlszeile (Windows 7). Um die Dinge zu vereinfachen, beschreibe ich nur den relevanten Teil.System.out Zeichencodierung

public static void main(String[] args) { 
    System.out.println("Árpád"); 
} 

Meine Ausgabe ist Müll. Es ist offensichtlich ein Zeichencodierungsproblem, die ungarischen Zeichen von Á und á werden nicht korrekt angezeigt. Ich habe folgendes versucht:

public static void main(String[] args) { 
    PrintStream ps = new PrintStream(System.out, true, "UTF-8"); 
    ps.println("Árpád"); 
} 

Aber meine Ausgabe ist immer noch Müll. Wie kann ich dieses Zeichencodierungsproblem mit der Windows 7-Befehlszeile beheben? Dank

+1

Sind Sie sicher, dass es kein Kompilierungsproblem ist? Wie kompilierst du, und in welcher Kodierung liegt dein Quellcode? –

+1

Unterstützt Ihr Display tatsächlich die Anzeige solcher Zeichen? Dh, können Sie sie auf Ihrer Tastatur auf diesem Display eingeben und sie erscheinen korrekt? – fge

+0

Ich kompiliere mit NetBeans und die Zeichencodierung der Quellen ist UTF-8 –

Antwort

15

bekam ich Ihren Code durch das Finden der richtige Codierung von der Kommandozeile zu arbeiten, und dann entweder mit dieser Codierung der PrintStream Version, oder, indem sie auf der Befehlszeile angeben und mit System.out.println nur.

Um die Codierung in der Befehlszeile zu finden, führen Sie chcp. Hier ist die Ausgabe Ich habe:

Active code page: 850 

, die den Namen Java charset entspricht der „IBM850“. Das erzeugt dann die richtige Ausgabe in der Befehlszeile:

java -Dfile.encoding=IBM850 Test 
+1

Mann! Du bist einfach großartig. +100 zu dieser Antwort. –

+0

+1 Danke, das hat das Problem fast gelöst. Der kleine á Charakter zeigte sich korrekt, der große Á erschien nicht richtig. –

+0

@LajosArpad: Beide funktionieren für mich - welche Codepage benutzt deine Konsole? –