用Java解码Base64字符串

Tom*_*asB 58 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") ;   
Run Code Online (Sandbox Code Playgroud)

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

RTB*_*RTB 65

修改您正在使用的包:

import org.apache.commons.codec.binary.Base64;
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

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

  • JDK中有javax.xml.bind.DatatypeConverter.parseBase64Binary,因此您无需使用sun API或外部库来使用base64. (3认同)

小智 11

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

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


Han*_*akr 9

以下内容适用于最新版本的Apache通用编解码器

byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes));
Run Code Online (Sandbox Code Playgroud)

并用于编码

byte[] encodedBytes = Base64.getEncoder().encode(decodedBytes);
System.out.println(new String(encodedBytes));
Run Code Online (Sandbox Code Playgroud)