Base64.encode возвращает странную строку - PullRequest
0 голосов
/ 07 марта 2019

Я выполняю этот код в 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 ]

4 голосов
/ 07 марта 2019

Вы можете кодировать непосредственно в строку, используя Base64.getEncoder().encodeToString:

String encoded = java.util.Base64.getEncoder()
                                 .encodeToString(password.getBytes());
0 голосов
/ 07 марта 2019

Попробуйте это:

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

Причина, по которой вы получаете странную строку, заключается в том, что вы на самом деле вызываете byte []. ToString ().Вместо этого вы должны создать строку из содержимого байтового массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...