2017-06-19 133 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); 
}