2013-05-21 3 views
1

Мне нужно передать кодированные данные base64 в xml в виде строкового значения. Я заметил, что код ниже печатает различное строковое представление. Какой из них правильный и почему?В чем разница между новой строкой (byte []) и DatatypeConverter.printBase64Binary (byte [])?

String example = "Hello universe!"; 
    byte[] base64data = Base64.encodeBase64(example.getBytes()); 
    System.out.println(new String(base64data)); 
    System.out.println(DatatypeConverter.printBase64Binary(base64data)); 

    System.out.println(new String(Base64.decodeBase64(base64data), "UTF-8")); 

И что я получаю в результате:

SGVsbG8gdW5pdmVyc2Uh 
U0dWc2JHOGdkVzVwZG1WeWMyVWg= 
Hello universe! 

ответ

4

U0dWc2JHOGdkVzVwZG1WeWMyVWg= декодированию SGVsbG8gdW5pdmVyc2Uh, который кодируется Hello universe!. Таким образом, вы сделали кодировку дважды.

Нет никакой разницы. Вы используете API неправильно. Не кодируйте уже закодированные данные еще раз.

+0

Вы правы. Название метода обмануло меня. Если бы это был printAsBase64Binary или encodeBase64Binary, не было бы никакого вопроса :) И есть разница. Сначала он просто печатает байты, а второй кодирует и печатает байты – jasiustasiu

Смежные вопросы