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
的字符编码时,它实际上也会修改父项的编码。非常成功!:)