package com;
import org.apache.commons.io.IOUtils;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "echojhj sdfsdfsdfsdf");
Process process = builder.start();
InputStream errorStream = process.getErrorStream();
System.out.println(System.getProperty("file.encoding"));
final String CP866 = "Cp866";
//not work
//IOUtils.copy(errorStream, new PrintStream(System.out, true, CP866));
//process.getInputStream().close();
//work
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(errorStream, CP866));
String s = null;
while ((s = bufferedReader.readLine()) != null) {
System.out.println(s);
}
}
}Java Console проблема кодирования
Фактический выход консоли:
windows-1251
"echojhj" Ґ пў«пҐвбп ўгв॥© Ё«Ё ўҐиҐ©
Є®¬ ¤®©, ЁбЇ®«пҐ¬®© Їа®Ја ¬¬®© Ё«Ё Ї ЄҐвл¬ д ©«®¬.
Ожидаемый выход консоли:
windows-1251
"echojhj" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Я пытаюсь использовать PrintStream для указания кодировки System.out, но он не работает. Я не понимаю, почему он не работает. Есть идеи ?
Что «это не работает» означает? Вы получили сообщение об ошибке? Если да, то какова ошибка? Вы получаете неожиданный результат? Что вы ожидали и как это отличается от того, что на самом деле происходит? – Jesper
Я получаю неожиданный вывод консоли. Я ожидаю этого: «echojhj» не является внутренней или внешней команда, исполняемая программа или пакетным файлом. –