String decode utf-8

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

URLDecoder.decode("hello&//à", "UTF-8"); new String("hello&//à", "UTF-8"); EntityUtils.toString("hello&//à", "utf-8"); 

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

Вам нужно закодировать, когда вы хотите превратить 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 

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

Основными функциями являются 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")); 

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