2
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 是为我做的吗?

4

2 回答 2

5

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

试试这个:

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

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

于 2011-03-14T16:20:32.003 回答
2

toString()on an array 不会满足您的期望...它只是toString()from 的默认实现Object,它根据对象的哈希码返回一个字符串。试试new String(decode)

于 2011-03-14T16:20:00.427 回答