无法使用Base64.decodeBase64(Commons codec)

时间:2011-03-14 16:18:25

标签: java base64 apache-commons-codec

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

我不知道这里有什么不对。我已经尝试了所有可能的组合。设置charset,toString,no toString。编码工作得很好。我可以将该号码丢入Web解码器并每次都获得正确的值。只是不能让这个工作。

输出:

 run:
SGVsbG8= (encode)

[B@1fb8ee3  (decode)

如果我使用for循环并手动将字符添加到字符串中,我可以使它工作。但是我觉得String为我做了那个?

2 个答案:

答案 0 :(得分:5)

当前的问题是如何将字节数组转换为字符串。

请改为尝试:

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

然而,使用未指定字符编码的String.getBytes()new String(byte[])的重载通常是个坏主意。他们使用平台默认编码,这意味着您的代码不可移植 - 或者至少,您的数据不是。我建议你使用常见的编码,如UTF-8。

答案 1 :(得分:2)

数组上的

toString()没有达到你期望的效果......它只是来自toString()的默认Object实现,它根据哈希码的哈希码返回一个字符串。宾语。试试new String(decode)