字符串解码utf-8

时间:2011-05-09 22:17:01

标签: java android

我如何解码android中的utf-8字符串?我已尝试使用此命令但输出相同的输入:

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

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

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

3 个答案:

答案 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,但看起来您的字符串不是特定的。您认为输出应该是什么?