我试图解码一个简单的Base64字符串,但我无法这样做。我目前正在使用org.apache.commons.codec.binary.Base64
包。
我使用的测试字符串是:abcdefg
,使用PHP YWJjZGVmZw==
进行编码。
这是我目前正在使用的代码:
Base64 decoder = new Base64();
byte[] decodedBytes = decoder.decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n") ;
上面的代码不会抛出错误,而是不会按预期输出解码后的字符串。
答案 0 :(得分:61)
修改您正在使用的包:
import org.apache.commons.codec.binary.Base64;
然后像这样使用它:
byte[] decoded = Base64.decodeBase64("YWJjZGVmZw==");
System.out.println(new String(decoded, "UTF-8") + "\n");
答案 1 :(得分:7)
以下内容适用于最新版本的Apache通用编解码器
byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes));
和编码
byte[] encodedBytes = Base64.getEncoder().encode(decodedBytes);
System.out.println(new String(encodedBytes));
答案 2 :(得分:2)
通常base64用于图像。如果您想解码图像(本例中使用org.apache.commons.codec.binary.Base64包解析jpg):
byte[] decoded = Base64.decodeBase64(imageJpgInBase64);
FileOutputStream fos = null;
fos = new FileOutputStream("C:\\output\\image.jpg");
fos.write(decoded);
fos.close();
答案 3 :(得分:1)
如果您不想使用apache,则可以使用Java8:
byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n");