无法获得base64.decodebase64工作(Commons编解码器)
-
22-10-2019 - |
题
String encode = Base64.encodeBase64String("Hello".getBytes());
System.out.println(encode);
byte[] decode = Base64.decodeBase64(encode);
System.out.println(decode.toString());
我无法说出什么问题。我尝试了所有可能的组合。设置charset,ToString,无肿胀。该编码完美地工作。我可以将该数字扔进Web解码器,并每次获得正确的值。只是无法让这个工作。
输出:
run:
SGVsbG8= (encode)
[B@1fb8ee3 (decode)
如果我使用循环并手动将字符添加到字符串中,我可以使它起作用。但是我以为Tostring为我做了吗?
解决方案
直接问题是如何将字节数组转换为字符串。
反试试:
System.out.println(new String(decode));
然而, ,通常是一个坏主意 String.getBytes()
或者 new String(byte[])
没有指定字符编码。他们使用平台默认编码,这立即表示您的代码无法便携式 - 或至少您的数据不是。我建议您使用常用编码,例如UTF-8。
其他提示
toString()
在数组上不做您期望的事情...只是默认 toString()
实施 Object
, ,它根据对象的哈希码返回字符串。尝试 new String(decode)
.
不隶属于 StackOverflow