Почему строка «¿» преобразуется в «Â¿» при вызове .getBytes()

StackOverflow https://stackoverflow.com/questions/176084

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top