Почему строка «¿» преобразуется в «Â¿» при вызове .getBytes()
-
05-07-2019 - |
Вопрос
При записи строки «¿» с использованием
System.out.println(new String("¿".getBytes("UTF-8")));
Вместо просто ¿ пишется ¿.
ПОЧЕМУ?И как это исправить?
Решение
Вам не нужно использовать UTF-16 для решения этой проблемы:
new String("¿".getBytes("UTF-8"), "UTF-8");
работает просто отлично.Пока кодировка, заданная для getBytes()
метод такой же, как кодировка, которую вы передаете конструктору String, все будет в порядке!
Другие советы
Вам необходимо указать Charset в конструкторе String (см. Документация по API).
Пытаться:
System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));
Вам необходимо указать кодировку как при преобразовании строки в байты, так и при преобразовании байтов обратно в строку.
Похоже, системная консоль не в UTF-8.
Не связан с StackOverflow