我可以从Java代码更改当前进程中命令行的设置吗?

时间:2018-03-02 01:53:36

标签: java windows command-line

我正在开发一个Java代码。现在我需要使用REST函数进行命令行转换,我需要将标准从它转移到Java代码。 我的问题是我无法从REST函数中获取正确的日语单词,因为命令行的字符代码不适合日语。

以下是示例代码。

private String getFirstLineOfStdOut(Process p) {

    String first_line_value = "";
    InputStream is = p.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));

    try {
        first_line_value = br.readLine();  // because it is one line output.
    } catch (IOException e) {
        e.printStackTrace();
    }

    return first_line_value;
}

public void runCommandLine(String[] commands) {

    ProcessBuilder pb_check_char_code = new ProcessBuilder(commands);
    Process process_check_char_code = null;
    try {
        process_check_char_code = pb_check_char_code.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        process_check_char_code.waitFor();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    String result = getFirstLineOfStdOut(process_check_char_code);
    System.out.println(result);
}

我运行以下代码。

    runCommandLine(new String[]{"C:\\Windows\\System32\\chcp.com"});
    runCommandLine(new String[]{"C:\\Windows\\System32\\chcp.com", "65001"});
    runCommandLine(new String[]{"sudo_translate_function", "English", "to", "Japanese", "hello"});
    runCommandLine(new String[]{"C:\\Windows\\System32\\chcp.com"});

他们的结果。

現在のコード ページ: 932  // It means Active code page: 932
Active code page: 65001
壊れた文字                  // broken words because of the inappropriate character code, 932
現在のコード ページ: 932  // It means Active code page: 932

适当的词应该是“こんにちは”而不是“壊れた文字”。 我担心他们无法在子流程中共享字符代码的变化。 我该怎么做才能分享字符代码的变化? 非常感谢你。

0 个答案:

没有答案