2011-03-14 54 views
2
String encode = Base64.encodeBase64String("Hello".getBytes()); 
System.out.println(encode); 
byte[] decode = Base64.decodeBase64(encode); 
System.out.println(decode.toString()); 

我不能告訴什麼是錯在這裏。我嘗試了所有可能的組合。設置字符集,toString,no toString。編碼工作完美。我可以把這個數字放到網絡解碼器中,每次都能得到正確的值。只是不能讓這個工作。無法獲得Base64.decodeBase64工作(共享編解碼器)

輸出:

run: 
SGVsbG8= (encode) 

[[email protected] (decode) 

我可以做,如果我用一個for循環,並手動將字符添加到字符串它的工作。但我想toString爲我做到了這一點?

回答

5

直接的問題是如何將字節數組轉換爲字符串。

試試這個:

System.out.println(new String(decode)); 

然而,它通常是一個壞主意,使用不指定字符編碼的String.getBytes()new String(byte[])重載。他們使用平臺默認編碼,這意味着您的代碼不是可移植的 - 或者至少,您的數據不是。我建議你使用常見的編碼,如UTF-8。

+0

非常感謝。我想我沒有考慮數組上的toString。現在有道理。 – 2011-03-14 17:24:30

2

toString()在一個數組上不會做你期望的事......它只是從Object的默認toString()實現,它根據對象的哈希碼返回一個字符串。嘗試new String(decode)