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/