Runtime.getRuntime().exec()执行命令时中文乱码的解决办法

当在Windows下执行命令时,例如:

try {
    Process p = Runtime.getRuntime().exec("ping 127.0.0.1");
    BufferedReader br = new BufferedReader(new InputStreamReader(
        p.getInputStream()));
    String buff = null;
    while ((buff = br.readLine()) != null) {
        System.out.println(buff);
    }
} catch (IOException e) {
    e.printStackTrace();
}

不显示中文,而是显示乱码。是因为从子进程获取输入流时没有设置编码,应在获取 InputStreamReader 流时设置 GBK 编码。可以将代码第三行改为:

BufferedReader br = new BufferedReader(new InputStreamReader(
    p.getInputStream(), "GBK"));

这样就能正常显示中文了。

参考:https://blog.csdn.net/spy2000/article/details/119675394

posted @ 2022-10-18 10:05  来一杯coffee  阅读(763)  评论(0)    收藏  举报