Ich habe ein Programm, das auf einer Konsole läuft und dessen Umlaute und andere Sonderzeichen ausgegeben werden als auf Macs. Hier ist ein einfaches Testprogramm:Java: Wie erkennt man (und ändert?) Die Kodierung von System.console?
public static void main(String[] args) {
System.out.println("höhößüä");
System.console().printf("höhößüä");
}
Auf einer Standard-Mac-Konsole (mit Standard-UTF-8-Kodierung), dieser Druck:
h?h????
h?h????
Aber nachdem manuell der Mac Terminals Codierung auf „Mac OS Roman “, es richtig gedruckt
höhößüä
höhößüä
Beachten sie, dass auf Windows-Systemen mit System.Console() funktioniert:
h÷h÷▀³õ
höhößüä
Also wie mache ich mein Programm ... rolleyes ... "run everywhere"?
2 Probleme: 1) Wie kann ich wissen, welche Kodierung in der Konsole festgelegt ist? 2) Gibt es eine Möglichkeit, immer noch mit System.console() zu arbeiten? – Epaga
Nein, Sie können Ihren Code nicht mit 'System.console()' speichern, und ich empfinde das nicht als kritisch. "PrintStream" hat auch alles, was Sie wollen und es funktioniert * richtig *. +1 für die Antwort von mir. – dimitarvp
1) Sie könnten den Systembefehl "locale" verwenden und seine Ausgabe parsen. – gamma