Java可以更改自己控制台的代码页吗?

Java可以更改自己控制台的代码页吗?,java,windows,unicode,console,Java,Windows,Unicode,Console,根据的结论,应用程序需要调用WriteConsoleW或chcp,以便将unicode字符输出到Windows控制台 我不想使用JNI,因此WriteConsoleW方法已过时Java应用程序是否可以在其内部运行的控制台上调用chcp 据我所知,调用将创建一个新的控制台,更改其代码页,然后终止控制台。也就是说,现有的控制台不会受到影响。基于直觉,我尝试了: ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "chcp", "65001

根据的结论,应用程序需要调用
WriteConsoleW
chcp
,以便将unicode字符输出到Windows控制台

我不想使用JNI,因此
WriteConsoleW
方法已过时Java应用程序是否可以在其内部运行的控制台上调用
chcp


据我所知,调用将创建一个新的控制台,更改其代码页,然后终止控制台。也就是说,现有的控制台不会受到影响。

基于直觉,我尝试了:

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


inheritIO()
使子进程继承父进程的
stdout
。当
chcp
修改子
stdout
的字符编码时,它实际上也会修改父项的编码。非常成功!:)

基于直觉,我试着:

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

inheritIO()
使子进程继承父进程的
stdout
。当
chcp
修改子
stdout
的字符编码时,它实际上也会修改父项的编码。非常成功!:)