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。

关于java - 无法使Base64.decodeBase64工作(通用编解码器),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5301339/

10-13 04:56