Base64 是一种常见的字符编码解码方式,一般用于将二进制数据编码为更具可读性的 Base64 进制格式。
在Java 6 ( JDK 1.6 ) 之前, JDK 一直没有包含 Base64 的实现类。因此大部分人都使用 Sum/Orale JDK 里面的 sun.misc.BASE64Encode 和sun.misc.BASE64Decode。然后这也成为很多 Java 开发者的习惯。一直沿用到今天的 Java8 中还有人在用。
JDK1.6 虽然添加了 Base64 的实现。但是,非常隐秘,竟然是在 javax.xml.bind 包下的 DatastypeConvert 类中的两个静态方法 parseBase64Binary 和 printBase64Binary.
Java 8 终于把 Base64 扶正了,在 java.util 包下提供了 Base64 类用于编码和解码 Base64 数据。
Java 8 java.util.Base64
Java 8 中的 java.util.Base64 类提供了三种类型的 Base64 编码解码格式:
1、 简单类型( simple ) : 编码字符只包含 A-Za-z0-9+/ 等 64 个字符。且编码的时候不会包含任何换行符 ( \r 、 \n 、\r\n )。解码的时候也只会解码 A-Za-z0-9+/ 内的字符,超出的则会被拒绝。
2、 URL : 编码字符只包含 A-Za-z0-9+_ 等 64 个字符。和 简单 相比,就是把 / 换成了 _ 。因为没有 / 字符,因此这种编码方式非常适合 URL 和文件名等。
3、 MIME : 编码会被映射为 MIME 友好格式:每一行输出不超过 76 个字符,而且每行以 \r\n 符结束。但末尾行并不会包含 \r\n。
内部类
java.util.Base64 还包含了两个内部静态类,分别实现了 RFC 4648 和 RFC 2045 中规范的 Base64 编码和解码方式。
内部类 | 说明 |
---|---|
static class Base64.Decoder | 该类实现使用 RFC 4648 和 RFC 2045 中规定的 Base64 解码方案解码数据 |
static class Base64.Encoder | 该类实现使用 RFC 4648 和 RFC 2045 中规定的 Base64 编码方案编码数据 |
每个内部类的方法详情,请直接点击相关 URL 查看。
静态方法
java.util.Base64 类提供的都是静态方法。下表列出了这些静态方法
方法 | 说明 |
---|---|
Base64.Decoder getDecoder() | 返回一个 Base64.Decoder 类型的 简单 解码器 |
Base64.Encoder getEncoder() | 返回一个 Base64.Encoder 类型的 |