2017-06-19 114 views
-3

我想使用android.util.Base64对字符串进行编码和解码,但它提供了一个糟糕的base-64错误。Android中的Base64解码字符串

String str = "EOKF36syRBtB11VgyChkNjc1HxRrajT7XXaxZfnVzPkV57K3b9yqkS284Ovb9uWzXgGeY2bxA3IySGfdOHiPAQ==F/v6hcTiU1sd975XHfDsz8o0rboujM77n7KwRMidobOLbo5ghUT/IFcxElUc8CirdZxaCaS3zs/CfRKRsXwbFNYd"; 
Base64.decode(str,Base64.NO_WRAP); 

我尝试使用以下标志字符串解码(NO_CLOSE,DEFAULT,NO_PADDING,URL_SAFE),但它给了同样的错误。

请帮我解决我的问题。

+0

Android调试规则#1:_always_如果您想要收到良好的答案,请粘贴您的错误。我在这里测试并且收到带有_encoded消息的Base64DecoderException,getValue的后缀byte_无效,这意味着当时解码的块没有用等号('61')或换行符('10')来完成。字节。如果真的值得 - 或者想了解更多 - 您可以调试/断点“Base64”类中正在执行的操作,并且还可以在线查看Base64规范。 – davidcesarino

回答

2

您的编码字符串似乎已损坏。尝试使用在线base64解码器解码您在变量'str'中定义的字符串。结果是乱码文本。

+0

没有更多的细节,这似乎是我们可以回答的最好的。 – davidcesarino

1

放置一个正确的base64字符串,并尝试像下面

String img = "your_base_64_string"; 
    byte[] decodedString = Base64.decode(img, Base64.DEFAULT); 
    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
4

我用下面的方法进行的base64字符串解码并能正常工作。

private String decodeBase64(String coded){ 
    byte[] valueDecoded= new byte[0]; 
    try { 
     valueDecoded = Base64.decode(coded.getBytes("UTF-8"), Base64.DEFAULT); 
    } catch (UnsupportedEncodingException e) { 
    } 
    return new String(valueDecoded); 
}