用Java解码Base64字符串

时间:2012-07-18 15:11:18

标签: java base64

我试图解码一个简单的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") ;   

上面的代码不会抛出错误,而是不会按预期输出解码后的字符串。

4 个答案:

答案 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");