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