Почему строка "¿" переводится в "the¿" при вызове .getBytes () - PullRequest
2 голосов
/ 07 октября 2008

При записи строки "¿" с использованием

System.out.println(new String("¿".getBytes("UTF-8")));

 пишется вместо ¿.

ПОЧЕМУ? И как мы это исправим?

Ответы [ 4 ]

5 голосов
/ 07 октября 2008

Вам не нужно использовать UTF-16 для решения этой проблемы:

new String("¿".getBytes("UTF-8"), "UTF-8");

работает просто отлично. Пока кодировка, заданная методу getBytes(), совпадает с кодировкой, передаваемой конструктору String, все будет в порядке!

2 голосов
/ 07 октября 2008

Вам необходимо указать Charset в конструкторе String (см. Документы API ).

1 голос
/ 07 октября 2008

Попробуйте:

System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));

Необходимо указать кодировку как при преобразовании строки в байты, так и при преобразовании байтов обратно в строку.

0 голосов
/ 07 октября 2008

Похоже, системная консоль не в UTF-8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...