我正在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。
我在做什么错了?
答案 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()。相反,您应该根据字节数组的内容创建一个字符串。