2013-05-21 61 views
1

我需要將base64編碼數據作爲字符串值傳遞給xml。我注意到下面的代碼會打印不同的字符串表示哪一個是正確的,爲什麼?新的String(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

相關問題