Java:Base64 编码
环境
- jdk 8 或者 6
示例
jdk 6
package jiangbo.java.lang;
import java.io.IOException;
import java.nio.charset.Charset;
import javax.xml.bind.DatatypeConverter;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Base64Demo {
public static void main(String[] args) throws IOException {
String name = "jiangbo";
Charset utf8 = Charset.forName("UTF-8");
BASE64Encoder base64Encoder = new sun.misc.BASE64Encoder();
String BASE64EncoderString = base64Encoder.encode(name.getBytes(utf8));
System.out.println(BASE64EncoderString);
BASE64Decoder base64Decoder = new sun.misc.BASE64Decoder();
byte[] decodeBuffer = base64Decoder.decodeBuffer(BASE64EncoderString);
System.out.println(new String(decodeBuffer, utf8));
String base64String = DatatypeConverter.printBase64Binary(name.getBytes(utf8));
System.out.println(base64String);
byte[] base64Binary = DatatypeConverter.parseBase64Binary(base64String);
System.out.println(new String(base64Binary, utf8));
}
}
jdk 8
package jiangbo.java.lang;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Demo {
public static void main(String[] args) throws IOException {
String name = "Base64 编码";
String string = Base64.getEncoder().encodeToString(name.getBytes(StandardCharsets.UTF_8));
System.out.println(string);
byte[] bytes = Base64.getDecoder().decode(string);
System.out.println(new String(bytes, StandardCharsets.UTF_8));
// url safe:不会出现 + /
string = Base64.getUrlEncoder().encodeToString(name.getBytes(StandardCharsets.UTF_8));
System.out.println(string);
bytes = Base64.getUrlDecoder().decode(string);
System.out.println(new String(bytes, StandardCharsets.UTF_8));
}
}
commons-codec
加入依赖
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.14</version>
</dependency>
package jiangbo.java.lang;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Demo {
public static void main(String[] args) throws IOException {
string = org.apache.commons.codec.binary.Base64.encodeBase64String(name.getBytes(StandardCharsets.UTF_8));
System.out.println(string);
bytes = org.apache.commons.codec.binary.Base64.decodeBase64(string);
System.out.println(new String(bytes, StandardCharsets.UTF_8));
// url safe:不会出现 + /
string = org.apache.commons.codec.binary.Base64
.encodeBase64URLSafeString(name.getBytes(StandardCharsets.UTF_8));
System.out.println(string);
bytes = org.apache.commons.codec.binary.Base64.decodeBase64(string);
System.out.println(new String(bytes, StandardCharsets.UTF_8));
}
}
工具类
package jiangbo.java.lang;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public final class Base64Utils {
private Base64Utils() {
}
public static final byte[] encode(byte[] bytes) {
return Base64.getEncoder().encode(bytes);
}
public static final byte[] encodeString(String str) {
return encode(str.getBytes(StandardCharsets.UTF_8));
}
public static final String encodeToString(byte[] bytes) {
return new String(encode(bytes), StandardCharsets.UTF_8);
}
public static final String encodeStringToString(String str) {
return encodeToString(str.getBytes(StandardCharsets.UTF_8));
}
public static final byte[] decode(byte[] bytes) {
return Base64.getDecoder().decode(bytes);
}
public static final byte[] decodeString(String str) {
return decode(str.getBytes(StandardCharsets.UTF_8));
}
public static final String decodeToString(byte[] bytes) {
return new String(decode(bytes), StandardCharsets.UTF_8);
}
public static final String decodeStringToString(String str) {
return decodeToString(str.getBytes(StandardCharsets.UTF_8));
}
public static final String encodeUrlSafeString(String str) {
return Base64.getUrlEncoder().encodeToString(str.getBytes(StandardCharsets.UTF_8));
}
public static final String decodeUrlSafeString(String str) {
return new String(Base64.getUrlDecoder().decode(str), StandardCharsets.UTF_8);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!