呼应结论https://stackoverflow.com/a/17177904/14731 https://stackoverflow.com/a/17177904/14731,应用程序需要调用WriteConsoleW
or chcp
为了将 unicode 字符输出到 Windows 控制台。
我不想使用 JNI 所以WriteConsoleW
方法已经出来了。Java应用程序是否可以调用chcp
在它运行的控制台上?
据我所知,调用Runtime.exec("cmd.exe", "/c", "chcp", "65001") http://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#exec-java.lang.String:A-将创建一个新控制台,更改其代码页,然后终止该控制台。这意味着现有的控制台不会受到影响。
基于预感,我尝试了:
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "chcp", "65001").inheritIO();
Process p = pb.start();
p.waitFor();
成功了!
inheritIO()
导致子进程继承父进程stdout
. When chcp
修改孩子的字符编码stdout
它实际上最终也会修改父级的编码。巨大的成功! :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)