Base64.encode返回奇怪的字符串

时间:2019-03-07 08:49:29

标签: java base64

我正在Java 11中运行以下代码:

String password = "Password123";
String encoded = java.util.Base64.getEncoder().encode(password.getBytes()).toString();
System.out.println("Encoded: " + encoded);

我得到的输出是Encoded: [B@46f5f779,这显然是错误的。

默认字符集为UTF-8。

我在做什么错了?

2 个答案:

答案 0 :(得分:4)

您可以使用Base64.getEncoder().encodeToString直接编码为字符串:

String encoded = java.util.Base64.getEncoder()
                                 .encodeToString(password.getBytes());

答案 1 :(得分:0)

尝试一下:

    String password = "Password123";
    String encoded = new String(java.util.Base64.getEncoder().encode(password.getBytes()));
    System.out.println("Encoded: " + encoded); // Encoded: UGFzc3dvcmQxMjM=

得到奇怪字符串的原因是您实际上是在调用byte []。toString()。相反,您应该根据字节数组的内容创建一个字符串。