Строка специальный символ - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь правильно оценить эту строку:

String s4 = "Entraîneur";
String s4a = new String(s4.getBytes("iso-8859-1"));

Значение во время выполнения:

Entra�®neur

Не могу понять

Благодарность

1 Ответ

0 голосов
/ 28 июня 2018

Вы создаете строку с одной кодировкой (по умолчанию, скорее всего, UTF-8, если не указано иное), а затем считываете ее с другой несовместимой кодировкой (ISO 8859-1). Это почти всегда создает проблемы с любыми другими символами, отличными от ANSI, так как разные кодировки представляют эти символы с разными последовательностями байтов.

Если вы хотите (плохую) аналогию, это немного похоже на распечатку некоторой латиницы, а затем передачу ее кому-то, кто говорит только по-английски, и спрашиванию, что это значит. Вы могли бы быть в состоянии решить некоторые из них, но другие части этого выйдут как бессмыслица.

Если вы измените код для использования кодировки по умолчанию:

String s4 = "Entraîneur";
String s4a = new String(s4.getBytes(Charset.defaultCharset()));

... тогда s4a должно содержать правильное значение.

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