簡體   English   中英

無法使Base64.decodeBase64工作(通用編解碼器)

[英]Can't get Base64.decodeBase64 to work (Commons codec)

String encode = Base64.encodeBase64String("Hello".getBytes());
System.out.println(encode);
byte[] decode = Base64.decodeBase64(encode);
System.out.println(decode.toString());

我無法在這里說出什么問題。 我嘗試了所有可能的組合。 設置字符集toString,不設置toString。 編碼工作完美。 我可以將該數字放入網絡解碼器中,並每次獲取正確的值。 只是無法使它正常工作。

輸出:

 run:
SGVsbG8= (encode)

[B@1fb8ee3  (decode)

如果使用for循環並手動將字符添加到字符串中,則可以使其工作。 但是我以為toString對我有用嗎?

眼前的問題是如何將字節數組轉換為字符串。

試試這個:

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

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

數組上的toString()並沒有達到您的期望……這只是Object的默認toString()實現,該實現基於對象的哈希碼返回一個字符串。 嘗試new String(decode)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM