我注意到以下代码有什么问题。我试图用base64编码编码JPG文件。编码后,我检查它是base64编码,它返回false。我无法找到我失踪的东西。
public String encodeBinary64(String value){
String output = null;
System.out.println("encoding the binary length "+value.length());
byte[] byteArray = Base64.encodeBase64(value.getBytes());
output = Arrays.toString(byteArray);
System.out.println("output length encoding"+output.length());
Boolean base64Encoded = Base64.isBase64(output); -- returning FALSE
System.out.println("Base 64 Encoded "+ base64Encoded );
return output;
}
更新2
以下建议的解决方案有所帮助。然而,在解码base64编码图像后,当我尝试打开时,我得到 Windows Photo Viewer无法打开消息。下面是代码。
public String decodeBinary64(String value){
String output = null;
System.out.println("Decoding the binary length "+value.length());
Boolean base64Encoded = Base64.isBase64(value);
System.out.println("base64Encoded "+base64Encoded);
if(base64Encoded){
byte[] byteArray = Base64.decodeBase64(value.getBytes());
try {
output = new String(byteArray, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("output length "+output.length());
}
return output;
}
注意:
我在编码之前和解码之后验证了文件的长度。大小保持不变。但该文件无法打开。
答案 0 :(得分:1)
Arrays.toString()
,在字节数组[1, 2, 3]
上,返回字符串"[1, 2, 3]"
。
你想要的是new String(byteArray, "ASCII")
。