用 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") ;

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

175085 次浏览

修改您正在使用的包:

import org.apache.commons.codec.binary.Base64;

然后像这样使用它:

byte[] decoded = Base64.decodeBase64("YWJjZGVmZw==");
System.out.println(new String(decoded, "UTF-8") + "\n");

通常用于图像。如果您想解码一个图像(本例中使用 org.apache.commans.codec.binaryjpg)。Base64软件包) :

byte[] decoded = Base64.decodeBase64(imageJpgInBase64);
FileOutputStream fos = null;
fos = new FileOutputStream("C:\\output\\image.jpg");
fos.write(decoded);
fos.close();

下面的代码应该可以使用最新版本的 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));

如果不想使用 apache,可以使用 Java8:

byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n");