在安卓系统中,如何解码UTF-8编码的字符串?

5

我正在使用以下数据解码UTF-8编码的字符串。

  • 原始字符串:秦世俊:用“心”工作找到属于自己的成就感【开讲啦 20160430】T

  • UTF-8编码:秦ä¸ä¿ï¼ç¨âå¿âå·¥ä½æ¾å°å±äºèªå·±çæå°±æãå¼è®²å¦20160430ã"

输出与输入相同。问题在哪里?

方法:

public String decodeString(String encodedString) {
            return new String(encodedString.getBytes(), "UTF-8");

    } 

我认为你的 encodedString 不是 utf8 编码的。 - Gohan
可以的。你可以在这里解码:https://mothereff.in/utf-8,结果应该是正确的。 - Usman Rana
请发布更多的代码,以便我们可以重现您的问题。目前您正在做什么还不太清楚。例如,您应该从一个初始化的字符串开始,然后是 String encodedString = .....; 等等。 - greenapps
它是一个简单的一行方法,请检查。 - Usman Rana
如果您没有提供可重现的代码,那么就没有什么可以检查的了。我们甚至无法看到您如何以及使用什么来调用该函数。我们不知道参数encodedString包含什么内容。因此,请展示完整的代码。 - greenapps
解决方法: return new String(encodedString.getBytes("ISO-8859-1"), "UTF-8"); - Usman Rana
2个回答

5

只需使用String result = URLDecoder.decode(string, "UTF-8");

或者使用以下方法:

byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");

没有收益,URLEncoder和字符串编码有所不同。您可以在以下链接中检查相同值,结果会有所不同: https://mothereff.in/utf-8 http://www.freeformatter.com/url-encoder.html#ad-output - Usman Rana

3

使用这个

String s2 = new String(bytes, "UTF-8"); // Charset with which bytes were encoded 

如果这对你不起作用

String decoded = new String(encoded.getBytes("ISO-8859-1"));

这不是和我的一样吗? - Usman Rana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接