我如何解码android中的utf-8字符串?我已尝试使用此命令但输出相同的输入:
URLDecoder.decode("hello&//à", "UTF-8");
new String("hello&//à", "UTF-8");
EntityUtils.toString("hello&//à", "utf-8");
答案 0 :(得分:41)
字符串不需要编码。它只是一系列Unicode字符。
如果要将String转换为字节序列,则需要编码。您选择的字符集(UTF-8,cp1255等)确定字符 - >字节映射。请注意,字符不一定会转换为单个字节。在大多数字符集中,大多数Unicode字符都被转换为至少两个字节。
字符串的编码通过以下方式执行:
String s1 = "some text";
byte[] bytes = s1.getBytes("UTF-8"); // Charset to encode into
当你有一个字节序列并且你想把它们变成一个字符串时,你需要解码。当你需要再次指定最初编码的字符集的字符集时(否则你最终会得到garblеdtеxt)。
解码:
String s2 = new String(bytes, "UTF-8"); // Charset with which bytes were encoded
如果您想更好地理解这一点,那么优秀的文字就是“The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)”
答案 1 :(得分:5)
核心功能是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"));
答案 2 :(得分:0)
尝试查看decode string encoded in utf-8 format in android,但看起来您的字符串不是特定的。您认为输出应该是什么?