如何在java中解码base64

时间:2016-03-17 11:03:26

标签: java

我在webservice响应中得到一个base64encoded xml数据,我想用Java解码它。 我试过了org.apache.commons.codec.binary.Base64;

byte bytesEncoded[] = base64encodedStringfromWebservice.getBytes();
// Decrypt data on other side, by processing encoded data
byte[] valueDecoded= Base64.decodeBase64(bytesEncoded );
System.out.println("Decoded value is " + new String(valueDecoded));

但仍有一些像(<,/>)这样的字符无法正确解码。

请建议如何正确解码?

2 个答案:

答案 0 :(得分:2)

来自getBytes is platform specificString方法。您需要指定编码,然后使用相同的编码来解码字符串。你可以使用UTF8。

您还需要按相反顺序执行这些步骤:string - > base64 - > raw utf8 bytes - > base64 - >串

// ENCODE data
byte bytesEncoded[] = base64encodedStringfromWebservice.getBytes("UTF8");

// DECODE data on other side, by processing encoded data
String base64encodedStringfromWebservice = new String(bytesEncoded, "UTF8");
byte[] valueDecoded = Base64.decodeBase64(base64encodedStringfromWebservice);
System.out.println("Decoded value is " + new String(valueDecoded));

答案 1 :(得分:1)

尝试指定您正在使用的字符集。例如,utf-8,正如您在此处所见:Decoding a Base64 string in Java

byte[] valueDecoded= Base64.decodeBase64(bytesEncoded);
System.out.println("Decoded value is " + new String(valueDecoded, "UTF-8"));