Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取java中的Windows命令行字符集_Java_Windows_Character Encoding - Fatal编程技术网

获取java中的Windows命令行字符集

获取java中的Windows命令行字符集,java,windows,character-encoding,Java,Windows,Character Encoding,我从Java读取windows命令行的输出时遇到问题,我使用的是Runtime.getRuntime().exec() 我简化了我的测试用例:我有一个名为お読みください.txt,我执行以下命令cmd/c dir c:/PATH 注意:实际的命令是tasklist,但只要我使用Runtime.getRuntime().exec(),结果就一样 String[]cmd=新字符串[]{“cmd”,“/c”,“dir”}; processprocess=Runtime.getRuntime().exec

我从Java读取windows命令行的输出时遇到问题,我使用的是
Runtime.getRuntime().exec()

我简化了我的测试用例:我有一个名为
お読みください.txt
,我执行以下命令cmd/c dir c:/PATH

注意:实际的命令是tasklist,但只要我使用Runtime.getRuntime().exec(),结果就一样

String[]cmd=新字符串[]{“cmd”,“/c”,“dir”};
processprocess=Runtime.getRuntime().exec(cmd);
BufferedReader标准输入=
新的BufferedReader(新的InputStreamReader(process.getInputStream(),StandardCharsets.UTF_8));
字符串s,result=“”;
而((s=stdInput.readLine())!=null){
如果(!s.isEmpty()){
结果+=s+“\n”;
}
}
系统输出打印项次(结果);
我只是���ǂ݂�������.文本

我尝试使用无字符集、默认值和其他字符集;在测试了所有字符集之后,我得到了我想要的:Shift\u JIS

这一定是因为我将非Unicode应用程序的语言设置为日语。systeminfo.exe说ja;日语用于区域配置

我可以简单地使用Shift_JIS阅读,但它只能在我的电脑中工作。其他系统配置如何

问题是,如何获得正确的字符集来读取Windows控制台输出?

基于

您可以执行“cmd/c chcp”以获取当前代码页。用于查找映射Java编码名称。

基于的答案


您可以执行“cmd/c chcp”以获取当前代码页。使用查找映射Java编码名称。

原因834不使用fork操作系统特定命令。为什么不使用
文件(“mydir”).listFiles()
?@AlastairMcCormack抱歉,我试图简化我的示例。实际的命令是tasklist,这仅适用于Windows。问题是Java不喜欢其他编码。原因834不使用特定于操作系统的命令。为什么不使用
文件(“mydir”).listFiles()
?@AlastairMcCormack抱歉,我试图简化我的示例。实际的命令是tasklist,这仅适用于Windows。问题是Java不喜欢其他编码。在不知道字符集的情况下读取输出难道不会有问题吗?
chcp
的输出是一个7位ASCII字符串,例如:
活动代码页:437
。解析它不存在编码问题。在一台spnaish windows机器中,它输出“Página de códigos activa:”。。。但是我想你可以执行一个正则表达式来提取它,就像“*:\s*(d+)”以前在不知道字符集的情况下读取输出不会有问题吗?
chcp
的输出是一个7位ASCII字符串,例如:
活动代码页:437
。解析它不存在编码问题。在一台spnaish windows机器中,它输出“Página de códigos activa:”。。。但我想您可以执行正则表达式来提取它,就像“*:\s*(d+)”