new String(byte [])和DatatypeConverter.printBase64Binary(byte [])之间有什么区别?

jas*_*siu 1 java base64

我需要将base64编码的数据作为字符串值传递给xml.我注意到下面的代码打印不同的字符串表示.哪一个是正确的,为什么?

    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"));
Run Code Online (Sandbox Code Playgroud)

而我得到的结果是:

SGVsbG8gdW5pdmVyc2Uh
U0dWc2JHOGdkVzVwZG1WeWMyVWg=
Hello universe!
Run Code Online (Sandbox Code Playgroud)

小智 5

U0dWc2JHOGdkVzVwZG1WeWMyVWg=解码SGVsbG8gdW5pdmVyc2UhHello universe!编码的.所以你做了两次编码.

没有区别.您使用的API方式错误.不要再次编码已编码的数据.