我有一個程序在控制檯上運行,它的變音和其他特殊字符正在Mac上輸出。這裏有一個簡單的測試程序:Java:如何檢測(並更改?)System.console的編碼?
public static void main(String[] args) {
System.out.println("höhößüä");
System.console().printf("höhößüä");
}
在默認的Mac控制檯(默認UTF-8編碼),這個打印:
h?h????
h?h????
但經過手動設置的Mac終端的編碼「的Mac OS羅馬」,它打印正確
höhößüä
höhößüä
注意在使用System.console()Windows系統的工作原理:
h÷h÷▀³õ
höhößüä
那麼我該如何製作我的程序... rolleyes ...「無處不在」?
2個問題:1)我怎麼知道哪種編碼在控制檯設置? 2)有什麼辦法仍然可以使用System.console()? – Epaga 2010-03-10 09:27:43
不,你不能使用'System.console()'保留你的代碼,並且我不認爲它是關鍵的。 'PrintStream'也擁有你想要的所有東西,它*可以正常工作。 +1爲我的答案。 – dimitarvp 2010-03-10 09:35:23
1)您可以使用系統命令「locale」並解析其輸出。 – gamma 2010-03-10 09:36:39