Как я могу декодировать строку utf-8 в android? Я попытался с помощью этих команд, но вывел их так же:
URLDecoder.decode("hello&//à", "UTF-8");
new String("hello&//à", "UTF-8");
EntityUtils.toString("hello&//à", "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
Если вы хотите понять это лучше, отличный текст " Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о юникодном и символьном наборах (без отговорок)!)"
основные функции 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, но это не похоже на то, что ваша строка закодирована с чем-то конкретным. Как вы думаете, какой результат должен быть?