Java inputStreamReader Charset

Mao*_*urk 5 java inputstream character-encoding inputstreamreader

我想ping一个目标IP地址并收到响应.为了实现这一点,我在Java中使用了带有runtime.exec方法和进程类的Windows命令行.我正在使用inputStreamReader获取响应.

我的默认字符集是windows-1254,它是土耳其语.当我收到它时,响应包含土耳其语字符,但在控制台中没有正确显示土耳其语字符.

我想从我得到的响应中获取一个数值,但我搜索的值包含一些土耳其字符,所以当我查找它时,我找不到它.

代码如下,我需要知道的是如何在这里看到土耳其字符:

runtime = Runtime.getRuntime();
process = runtime.exec(pingCommand);

BufferedReader bReader = new BufferedReader(
        new InputStreamReader(process.getInputStream(), "UTF8"));

String inputLine;
while ((inputLine = bReader.readLine()) != null) {
    pingResult += inputLine;
}

bReader.close();
process.destroy();

System.out.println(pingResult);
Run Code Online (Sandbox Code Playgroud)

Mao*_*urk 6

为了解决这个问题,检查当前操作系统在其命令行上使用的字符集并获取与此字符集兼容的数据是必要的.

我发现土耳其XP命令行的字符集是CP857,当您编辑如下代码时,问题就解决了.

BufferedReader bReader = new BufferedReader(
        new InputStreamReader(process.getInputStream(), "CP857"));
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

注意:您可以通过"chcp"命令学习默认命令行charset.