Как декодировать сообщение пришедшее из класса Process по InputStream
Вот такой код:
Process proc = Runtime.getRuntime().exec("ipconfig");
proc.waitFor();
InputStream in = proc.getInputStream();
byte[] input_bytes = new byte[in.available()];
for (int i = 0; i < input_bytes.length; i++) {
input_bytes[i] = (byte)in.read();
}
String input_string = new String(input_bytes, StandardCharsets.UTF_8);
System.out.println(input_string);
Я запустил утилиту ipconfig, подождал пока она выполнится, после чего достал из процесса InputStream
, прочитал все доступные байты из него, попытался их декодировать в строку, запустил программу, но вместо кириллицы он пишет знаки � и другие непонятные.
Пытался использовать разные кодировки, US_ASCII, UTF-16 и т. д., кириллицу все равно не декодирует.
Скорее всего, проблема в том, что коды кириллицы не вмещаются в диапазон byte
, но, хоть метод in.read()
и возвращает int
, над методом стоит аннотация @Range(from = -1, to = 255)
, да и в конструктор класса String
можно запихнуть лишь массив байтов
Можно ли как то это исправить и правильно декодировать кириллицу? Предлагайте любые способы, рассмотрю всё!