字符串解码utf-8

mag*_*llo 16 java android

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

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

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

EntityUtils.toString("hello&//à", "utf-8");
Run Code Online (Sandbox Code Playgroud)

Ita*_*man 43

字符串不需要编码.它只是一系列Unicode字符.

如果要将String转换为字节序列,则需要进行编码.您选择的字符集(UTF-8,cp1255等)确定字符 - >字节映射.请注意,字符不一定会转换为单个字节.在大多数字符集中,大多数Unicode字符被转换为至少两个字节.

字符串的编码通过以下方式执行:

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

当你有一个字节序列并且你想把它们变成一个字符串时,你需要解码.当你需要再次指定最初编码的字符集的字符集时(否则你最终会得到garblеdtеxt).

解码:

String s2 = new String(bytes, "UTF-8"); // Charset with which bytes were encoded 
Run Code Online (Sandbox Code Playgroud)

如果你想更好地理解这一点,那么一个伟大的文本是" 绝对最低的每个软件开发人员,绝对必须知道关于Unicode和字符集(没有借口!) "


Zep*_*hyr 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"));
Run Code Online (Sandbox Code Playgroud)