我如何在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和字符集(没有借口!) "
核心职能是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)
| 归档时间: |
|
| 查看次数: |
115830 次 |
| 最近记录: |