String decode utf-8

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

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

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

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

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

основные функции 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"));