Möchte man Umlaute (als Unicode) auf der Windows XP Konsole ausgeben, klappt dies nicht.
Ursache: Windows verwendet in der Konsole CP850 (DOS) und sonst CP1252 (ANSI). Java wählt als Standard-Encoding die CP1252, was wunderbar funktioniert, wenn man beispielsweise Dateien liest und schreibt. In der Konsole übersetzt Jave den internen Unicode nach CP1252 und sendet diese Bytes an die Konsole, die wiederum CP850 verwendet und diese falsch interpretiert.
Lösung: Eine System-Property (z.B. „console.encoding“) oder einen Komandozeilenparamter, mit dem man die Codepage für die Konsole wählen kann.
[code lang=“java“]String cp = System.getProperty(„console.encoding“);
if (cp != null) {
System.setOut(new PrintStream(System.out, true, cp));
System.setErr(new PrintStream(System.err, true, cp));
}[/code]
Die Anwendung starte man dann mit:
java -Dconsole.encoding=CP850