Столкнулся с проблемой в примере из книги Шилда :
public class ByteArrayInputReset {
public static void main(String[] args) throws UnsupportedEncodingException {
String tmp = "abc"; // - Проблема ТУТ
byte buf[] = tmp.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(buf);
for (int i = 0; i < 2 ; i++) {
int c;
while ((c=in.read()) !=-1){
if (i==0){
System.out.print((char) c);
}else {
System.out.print(Character.toUpperCase((char)c));
}
}
System.out.println();
in.reset();
}
}
}
Суть в том, что если я ввожу английские символы в строку tmp, то на консоль все выводится как положено, Но если вводим русские символы (или строки), то на выходе получаем:
абв.
byte buf[] = tmp.getBytes("UTF-8");
Так пробовал разные кодировки, не помогло.
Думаю важно добавить - работаю в intellij idea 2018, настройки - File Enkoding
Стандартный вывод - sout работает как надо
но вот при использовании метода tmp.getBytes(); и русских символов, буфер забивается (непонятной) кодировкой и соответственно извлекается ересь
повторюсь, при использовании анг. символов все отрабатывает как надо.
Объясните пожалуйста как добиться правильного вывода и в чем ошибка?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей