# Java, `cmd.exe' und UTF-8



## phkoester (7. Mai 2011)

Soweit ich weiß, hat es noch nie funktioniert, UTF-8 auf der Windows-Console auszugeben.

Nehmen wir mal folgenden Beispiel-String: "‘’ “” – — »« ›‹ © … ← → ↑ ↓ 奥" (das letzte Zeichen schön fies chinesisch).

Nach meinem Verständnis mach ich `cmd.exe' mit `chcp 65001' fit für UTF-8.

Wenn ich jetzt folgende Java-Klasse:

public class Foo {
	public static void main(String[] args) {
	    System.out.println("file.encoding=" + System.getProperty("file.encoding"));
	    System.out.println("‘’ “” – — »« ›‹ © … ← → ↑ ↓ 奥");
	}
}

So kompiliere und starte:

> javac -encoding utf8 Foo.java
> echcp 65001
> java -Dfile.encoding=UTF-8 Foo

dann müßte das nach meinem Dafürhalten funktionieren, aber das tut es nicht. Ich krieg die Zeichen zwar korrekt angezeigt, aber danach folgt Müll, der Output sieht so aus:

‘’ “” – — »« ›‹ © … ← → ↑ ↓ 奥�‹ © … ← → ↑ ↓ 奥→ ↑ ↓ 奥 ↓ 奥 奥��

Das ist nicht ganz das, was ich wollte.

Ich weiß nicht, wie Ihr das seht, aber ich denke, wir schreiben das Jahr 2011, und da ist es doch einigermaßen peinlich, wenn Java kein UTF-8 auf die Konsole schreiben kann.

Wer hat jetzt den Schwarzen Peter? Ist `cmd.exe' zu blöd (was ich nicht glaube), hab ich irgendwann vergessen, oder ist das wirklich ein JRE-Bug?

Ich hab heute vorsichtshalber mal einen höflichen Bug-Report geschrieben, aber vielleicht weiß ja jemand, wie man unter Windows UTF-8 auf die Konsole schreiben kann. Ich krieg's einfach nicht hin und gebe vorerst auf.

Grüße, ach, und ja, ich bin neu hier, hallo allerseits,
Philip


----------



## Fu3L (7. Mai 2011)

Die Klasse Console bietet volle Unterstützung für Unicode Zeichen  Einfach mal danach suchen in der API. Auch zum Einlesen der selben.

Edit: Vllt is volle UNterstützung optimistisch gewesen, lange her, dass ichs genutzt habe^^ Aber Umlaute klappen damit auf jeden Fall^^


----------



## phkoester (7. Mai 2011)

Das hilft mir nicht weiter. Ich will nach System.out schreiben und nicht auf ein Console-Objekt. Ich müßt's mal überprüfen, aber ich wäre schwer überrascht, wenn es da wider Erwarten funzen sollte. Ich fürchte, da gibt's die gleichen Probleme.


----------



## phkoester (7. Mai 2011)

Fu3L hat gesagt.:


> Aber Umlaute klappen damit auf jeden Fall^^



Jaha, Umlaute, die sind ja noch locker! Nimm mal die härteren Fälle wie Thai oder Chinesisch, dann merkt man schon schneller, woran man ist!


----------

