При написании строку «¿» с использованиемПочему строка «¿» переводятся в «Â¿» при вызове .getBytes()
System.out.println(new String("¿".getBytes("UTF-8")));
¿ записывается вместо того, чтобы просто ¿.
ПОЧЕМУ? И как мы это исправим?
При написании строку «¿» с использованиемПочему строка «¿» переводятся в «Â¿» при вызове .getBytes()
System.out.println(new String("¿".getBytes("UTF-8")));
¿ записывается вместо того, чтобы просто ¿.
ПОЧЕМУ? И как мы это исправим?
Вы не должны использовать UTF-16, чтобы решить эту проблему:
new String("¿".getBytes("UTF-8"), "UTF-8");
работает просто отлично. Пока кодировка, данная методу getBytes()
, такая же, как и кодировка, которую вы передаете конструктору String, вы должны быть в порядке!
Похоже консоль система не в UTF-8
Вы должны указать Charset в конструкторе Струнный (см API docs).
Try:
System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));
Вы должны указать кодировку как при преобразовании строки в байтах, а при преобразовании байтов обратно в строку.
Это именно то, что я сказал, плюс я связан с документами API. ;) – 2008-10-06 21:05:06