我一直在从Java读取Windows命令行的输出时遇到问题,我正在使用Runtime.getRuntime().exec()
我简化了我的测试用例:我有一个名为お読みください.txt
的文件,我执行以下command cmd /c dir C:/PATH
注意:实际的命令是tasklist,但只要我使用Runtime.getRuntime(),它就会得到相同的结果.exec()
String[] cmd = new String[]{ "cmd", "/c", "dir" };
Process process = Runtime.getRuntime().exec(cmd);
BufferedReader stdInput =
new BufferedReader(new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8));
String s, result = "";
while ((s = stdInput.readLine()) != null) {
if (!s.isEmpty()) {
result += s + "\n";
}
}
System.out.println(result);
我得到 ǂ݂ .txt
我试过没有charset,默认和其他的;在测试了所有字符集之后,我得到了我正在寻找的那个: Shift_JIS
这一定是因为我已将非Unicode应用程序的语言设置为日语。 systeminfo.exe为区域配置说 ja;日语。
我可以简单地使用Shift_JIS来阅读,但它只能在我的电脑上使用。那么其他系统配置呢?
问题是,如何才能获得正确的charset来读取Windows控制台输出?
答案 0 :(得分:0)
基于What encoding/code page is cmd.exe using?
的答案您可以执行“cmd / c chcp”来获取当前代码页。使用Code Page Identifiers查找映射Java编码名称。