2016-08-31 79 views
1

迴應https://stackoverflow.com/a/17177904/14731的結論,應用程序需要調用WriteConsoleWchcp以便將unicode字符輸出到Windows控制檯。Java可以更改自己的控制檯的代碼頁嗎?

我不想使用JNI,因此WriteConsoleW方法已經結束。 Java應用程序可能在其運行的控制檯上調用chcp

據我所知,調用Runtime.exec("cmd.exe", "/c", "chcp", "65001")將創建一個新的控制檯,更改其代碼頁,然後殺死控制檯。意思是,現有的控制檯不會受到影響。

回答

3

基於一種預感,我想:

ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "chcp", "65001").inheritIO(); 
Process p = pb.start(); 
p.waitFor(); 

和它的工作!

inheritIO()導致子進程繼承父進程stdout。當chcp修改子stdout的字符編碼時,它實際上最終也會修改父代的編碼。巨大的成功! :)

相關問題