2017-04-13 44 views
-1

我有一个Base 64编码的字符串: “MTg2MTYyOTAuMTQ5MTg1NzAxMy4a1x1biIm69KFEf6yYRztKIW745NNj + qzzDAQoEOiBYw ==”基本64解码Android中

当尝试基Android中它给一些垃圾字符64解码此。

输出:!18616290.1491857013 [DG;ĴNC(C

预期:!18616290.1491857013 [DG;ĴNC(C

我使用的代码是:

String val =new String(Base64.decode(encodedString,Base64.DEFAULT)); 

有一些垃圾越来越人物介绍如何摆脱他们

感谢

“?”。?。 10
+0

确保您传递一个UTF-8字符串为您的基础-64编码器。我怀疑“垃圾角色”实际上应该在那里。当我复制并粘贴时,你粘贴的“预期”值在'('和'c'之间有一个“垃圾字符”,而且该字符串的base-64编码远小于你问题中的那个(在线base-64编码器)(https://www.base64encode.org/) – CommonsWare

+0

已编辑从预期输出中删除垃圾字符 – user2284140

+0

该输出的base-64 UTF-8编码为“MTg2MTYyOTAuMTQ5MTg1NzAxMy5bREc7SiFuYyhj”基于[这个编码器](https://www.base64encode.org/)。这是不同的 - 并且大大缩短 - 作为编码值,我认为问题在于你的编码,而不是用Andoid执行解码 – CommonsWare

回答

0

尝试:

private String decodeString(String encoded) { 
    byte[] dataDec = Base64.decode(encoded.replace("=", ""), Base64.DEFAULT); 
    String decodedString = ""; 
    try { 

     decodedString = new String(dataDec, "UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 

    } finally { 

     return decodedString; 
    } 
} 
+0

解决方案的确在指定新字符串中原始字节的字符集,而不是UTF-8,可能是Cp1252或其他什么 –

+0

不工作!!!相同的输出 – user2284140