System.out.println(System.in.read());
// Ввод: паровоз
// Вывод: 208
1. Согласно какой таблице, кодировке, инструкциям (или как это называется) символ 'п' кодируется как число 208?
2. Какой простой командой/способом можно перевести обратно число 208 в символ 'п' или строку "п"?dell
16 уровень
Что такое байт с числом 208?
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
9 декабря 2019, 17:00полезный
Согласно кодировке Unicode символ "п" кодируется двумя байтами - 208 и 191.
Но поскольку InputStream читает побайтово, а не посимвольно, ты получил только первую часть.
+2
dell
9 декабря 2019, 17:06
как перевести обратно?
0
IceBergMaster
9 декабря 2019, 17:24
Загнать все нужные байты в байт массив, а потом передать в new String(), как вариант.
0
Ksenia Volkova Java Developer в DXC Master
9 декабря 2019, 17:25
0
dell
11 декабря 2019, 19:07
1) берутся первые 8 бит (зарядов) из считываемого источника;
2) смотрится соответствующий им код в dec-форме по той таблице (кодировке), которая указана в настройках IDE (в Eclipse по крайней мере можно).
3) возвращается этот dec-код (т. е. десятичное число).
Кодировок unicode не одна и не две, и согласно некоторым из них – значения будут не 208 и 191, и даже не 2 числа. Для UTF-8: 208, 191.
0
Ksenia Volkova Java Developer в DXC Master
11 декабря 2019, 19:15
И поэтому если нам нужна не та кодировка, которая используется по умолчанию, мы ее указываем явным образом.
Например,
String target = new String(bytes, StandardCharsets.US_ASCII);
+1
Ksenia Volkova Java Developer в DXC Master
11 декабря 2019, 19:19
Можно, конечно. В задачках на JavaRush так иногда и приходится делать. Но это работает только с ограниченным диапазоном символов.
0
Wladyslaw Java Developer Master
11 декабря 2019, 19:44
Чар для подобных целей и был предназначен, насколько я знаю. Просто потом юникод вылез за значение 65535 и красивого типа для представления любого кодпоинта из юникода таки не вышло
0