70

我正在尝试解码一个简单的 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

4 回答 4

72

修改您正在使用的包:

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

然后像这样使用它:

byte[] decoded = Base64.decodeBase64("YWJjZGVmZw==");
System.out.println(new String(decoded, "UTF-8") + "\n");
于 2012-07-18T15:16:30.600 回答
17

以下内容应适用于最新版本的 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));
于 2017-07-23T07:17:05.507 回答
13

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

byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw=="); 
System.out.println(new String(decodedBytes) + "\n");
于 2019-05-01T20:44:08.070 回答
3

通常base64用于图像。如果您想解码图像(在此示例中为 jpg,使用 org.apache.commons.codec.binary.Base64 包):

byte[] decoded = Base64.decodeBase64(imageJpgInBase64);
FileOutputStream fos = null;
fos = new FileOutputStream("C:\\output\\image.jpg");
fos.write(decoded);
fos.close();
于 2015-03-03T09:38:35.063 回答