декодирование строк utf-8 - PullRequest
15 голосов
/ 10 мая 2011

Как я могу декодировать строку utf-8 в Android? Я попытался с этими командами, но вывести это же ввода:

URLDecoder.decode("hello&//à", "UTF-8");

new String("hello&//à", "UTF-8");

EntityUtils.toString("hello&//à", "utf-8");

Ответы [ 3 ]

42 голосов
/ 10 мая 2011

Строка не нуждается в кодировании.Это просто последовательность символов Unicode.

Вам необходимо кодировать , если вы хотите превратить строку в последовательность байтов.Выбранная вами кодировка (UTF-8, cp1255 и т. Д.) Определяет отображение символов-> байтов.Обратите внимание, что символ не обязательно переводится в один байт.В большинстве кодировок большинство символов Unicode переводятся как минимум в два байта.

Кодирование строки выполняется с помощью:

String s1 = "some text";
byte[] bytes = s1.getBytes("UTF-8"); // Charset to encode into

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

Декодирование:

String s2 = new String(bytes, "UTF-8"); // Charset with which bytes were encoded 

ЕслиВы хотите понять это лучше, отличный текст: « Абсолютный минимум, который должен знать каждый разработчик программного обеспечения Абсолютно, положительно, необходимо знать о Unicode и наборах символов (без оправданий!) »

5 голосов
/ 13 февраля 2015

основными функциями являются getBytes(String charset) и new String(byte[] data).Вы можете использовать эти функции для декодирования UTF-8.

Декодирование UTF-8 на самом деле представляет собой преобразование строки в строку, промежуточный буфер представляет собой байтовый массив.Так как целью является строка UTF-8, то единственным параметром для new String() является байтовый массив, вызов которого равен new String(bytes, "UTF-8")

. Тогда ключ является параметром для ввода закодированной строки, чтобы получить внутреннююбайтовый массив, который вы должны знать заранее.Если вы этого не сделаете, угадайте наиболее вероятный вариант: «ISO-8859-1» - хорошее предположение для английского пользователя.

Предложение расшифровки должно быть

String decoded = new String(encoded.getBytes("ISO-8859-1"));
0 голосов
/ 10 мая 2011

Попробуйте посмотреть декодировать строку, закодированную в формате utf-8 в android , но это не похоже на то, что ваша строка закодирована с чем-то конкретным.Как вы думаете, что должно быть на выходе?

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