我在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));
但仍有一些像(<,/>)这样的字符无法正确解码。
请建议如何正确解码?
答案 0 :(得分:2)
来自getBytes
is platform specific的String
方法。您需要指定编码,然后使用相同的编码来解码字符串。你可以使用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"));