五、Java 8 java.util.Base64 编码解码

五、Java 8 java.util.Base64 编码解码

是一种常见的字符编码解码方式,一般用于将二进制数据编码为更具可读性的 进制格式。

在 Java 6 ( JDK 1.6 ) 之前,JDK 一直没有包含 的实现类。因此大部分人都使用 Sum/Orale JDK 里面的 sun.misc. 和sun.misc.。然后这也成为很多 Java 开发者的习惯。一直沿用到今天的 Java8 中还有人在用。

JDK 1.6 虽然添加了 的实现。但是java url base64编码,非常隐秘,竟然是在 javax.xml.bind 包下的 类中的两个静态方法 和 .

Java 8 终于把 扶正了,在 java.util 包下提供了 类用于编码和解码 数据。

Java 8 java.util.

Java 8 中的 java.util. 类提供了三种类型的 编码解码格式:

简单类型( ) : 编码字符只包含 A-Za-z0-9+/ 等 64 个字符。且编码的时候不会包含任何换行符 ( r 、 n 、rn )。解码的时候也只会解码 A-Za-z0-9+/ 内的字符,超出的则会被拒绝。URL : 编码字符只包含 A-Za-z0-9+_ 等 64 个字符。和 简单 相比java url base64编码,就是把 / 换成了 _ 。因为没有 / 字符,因此这种编码方式非常适合 URL 和文件名等。MIME : 编码会被映射为 MIME 友好格式:每一行输出不超过 76 个字符,而且每行以 rn 符结束。但末尾行并不会包含 rn。内部类

java.util. 还包含了两个内部静态类五、Java 8 java.util.Base64 编码解码,分别实现了 RFC 4648 和 RFC 2045 中规范的 编码和解码方式。

内部类说明

class .

该类实现使用 RFC 4648 和 RFC 2045 中规定的 解码方案解码数据

class .

该类实现使用 RFC 4648 和 RFC 2045 中规定的 编码方案编码数据

每个内部类的方法详情,请直接点击相关 URL 查看。

静态方法

java.util. 类提供的都是静态方法。下表列出了这些静态方法

方法说明

. ()

返回一个 . 类型的 简单 解码器

. ()

返回一个 . 类型的 简单 编码器

. ()

返回一个 . 类型的 MIME 解码器

. ()

返回一个 . 类型的 MINE 编码器

. (

int , byte )

返回一个 . 类型的使用特定长度和行分隔符的 MINE 编码器

. ()

返回一个 . 类型的 URL 和文件名安全的解码器

. ()

返回一个 . 类型的 URL 和文件名安全的编码器

范例一: 基本的编码解码器

我们写一个范例演示下 () 和 () 两个方法

.java

import java.util.Base64;
import java.io.UnsupportedEncodingException;
public class Base64Tester {
   public static void main(String args[]) {
      try {
         String base64encodedString = Base64.getEncoder().encodeToString(
            "Java 8 Base64 编码解码 - Java8新特性 - 大白菜博客 ".getBytes("utf-8"));
         System.out.println(base64encodedString);
         System.out.println();
         byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
         System.out.println(new String(base64decodedBytes, "utf-8"));
      } catch(UnsupportedEncodingException e) {
         System.out.println("异常:" + e.getMessage());
      }
   }
}

运行以上范例,输出结果如下

[dabaicai@www.cmsblogs.cn helloworld]$ javac Base64Tester.java  && java Base64Tester
SmF2YSA4IEJhc2U2NCDnvJbnoIHop6PnoIEgLSBKYXZhOOaWsOeJueaApyAtIOeugOWNleaVmeeoiyA=
Java 8 Base64 编码解码 - Java8新特性 - 大白菜博客

范例二: URL 和文件名安全的编码解码器

我们写一个范例演示下 () 和 () 两个方法

.java

import java.util.Base64;

java url base64编码

import java.io.UnsupportedEncodingException; public class Base64Tester { public static void main(String args[]) { try { String base64encodedString = Base64.getUrlEncoder().encodeToString( "Java 8 Base64 编码解码 - Java8新特性 - 大白菜博客 ".getBytes("utf-8")); System.out.println(base64encodedString); System.out.println(); byte[] base64decodedBytes = Base64.getUrlDecoder().decode(base64encodedString); System.out.println(new String(base64decodedBytes, "utf-8")); } catch(UnsupportedEncodingException e) { System.out.println("异常:" + e.getMessage()); } } }

运行以上范例,输出结果如下

[dabaicai@www.cmsblogs.cn helloworld]$ javac Base64Tester.java  && java Base64Tester
SmF2YSA4IEJhc2U2NCDnvJbnoIHop6PnoIEgLSBKYXZhOOaWsOeJueaApyAtIOeugOWNleaVmeeoiyA=
Java 8 Base64 编码解码 - Java8新特性 - 大白菜博客

范例三:MIME 编码解码器

我们写一个范例演示下 () 和 () 两个方法

.java

import java.util.Base64;
import java.util.UUID;
import java.io.UnsupportedEncodingException;
public class Base64Tester {
   public static void main(String args[]) {
      try {
         StringBuilder stringBuilder = new StringBuilder();
         for (int i = 0; i < 10; ++i) {
            stringBuilder.append(UUID.randomUUID().toString());
         }
         byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");
         String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes);
         System.out.println(mimeEncodedString);
         System.out.println();
         byte[] base64decodedBytes = Base64.getMimeDecoder().decode(mimeEncodedString);
         System.out.println(new String(base64decodedBytes, "utf-8"));
      } catch(UnsupportedEncodingException e) {
         System.out.println("异常:" + e.getMessage());
      }
   }
}

运行以上范例,输出结果如下

[dabaicai@www.cmsblogs.cn helloworld]$ javac Base64Tester.java  && java Base64Tester
YTU3MTc4MTgtZDFhMS00MjJmLWEyYjgtNTczNzdjMjQ4N2VlZWE4OGVmNTgtNjA3YS00MWY5LTk0
OTAtNjhmNTk1NGIwZGYwYmU0NzA3NjgtOGU0OS00MjBiLWE1YTktYjM1NDcyOTI2MjkwZmExMTdh
NWQtMmRlMi00ZjllLTk1YmUtZWE0MzZlMWEwZmYxZjU2NzE5YWEtMTQzNy00YzZmLTgyNGQtNzFm
YTNkZmVkNjBiNWE4ODViMmYtNjQ3NC00ODY2LThhMDEtMmRkMWY5NmQ5ZDgyMjNiNjAyMjgtNmY3
NC00NGZjLWI3NWItM2Y3YzFmODlmOTIxYjA0ODE2ZjEtYTliZC00NjNkLTkxYWEtZDc3NDlhZGUx
MTU4M2ZiMjJhZDItNzRmNS00Y2IxLTkyNmItY2Y4ZjZkNzc4OWVlZmJiMWQwYjMtZGE0MS00OTBi
LWJmYWMtMTVmNjVmMjIxODc4
a5717818-d1a1-422f-a2b8-57377c2487eeea88ef58-607a-41f9-9490-68f5954b0df0be470768-8e49-420b-a5a9-b35472926290fa117a5d-2de2-4f9e-95be-ea436e1a0ff1f56719aa-1437-4c6f-824d-71fa3dfed60b5a885b2f-6474-4866-8a01-2dd1f96d9d8223b60228-6f74-44fc-b75b-3f7c1f89f921b04816f1-a9bd-463d-91aa-d7749ade11583fb22ad2-74f5-4cb1-926b-cf8f6d7789eefbb1d0b3-da41-490b-bfac-15f65f221878

是不是看不出来有 76 个字符分割 ? 没关系,我们使用另一个 (int , byte ) 重载方法试一下

.java

import java.util.Base64;
import java.util.UUID;
import java.io.UnsupportedEncodingException;
public class Base64Tester {
   public static void main(String args[]) {
      try {
         StringBuilder stringBuilder = new StringBuilder();
         for (int i = 0; i < 10; ++i) {
            stringBuilder.append(UUID.randomUUID().toString());
         }
         byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");
         String mimeEncodedString = Base64.getMimeEncoder(32,"@~@nn".getBytes("utf-8")).encodeToString(mimeBytes);
         System.out.println(mimeEncodedString);
         System.out.println();
         byte[] base64decodedBytes = Base64.getMimeDecoder().decode(mimeEncodedString);
         System.out.println(new String(base64decodedBytes, "utf-8"));
      } catch(UnsupportedEncodingException e) {
         System.out.println("异常:" + e.getMessage());
      }
   }
}

运行以上范例,输出结果如下

[dabaicai@www.cmsblogs.cn helloworld]$ javac Base64Tester.java  && java Base64Tester
OTkwNWYxY2QtMDBkYS00Y2M1LTgwMGUt@~@
YjgzYTNkNGZlMGJhNGNmM2Q2YzItODli@~@
ZS00ZDQyLWI1MzEtYTEwMmRhNzk2ZjBi@~@
Njk0MWNmMzItYzhlZS00NjE0LTk5NWMt@~@
ODUwYWM0NDE3YTEyYzdjOTBkMGMtOTZl@~@
Ny00MjkxLThmOGUtM2JkYWQ4NmY4YjU1@~@
Nzk2NmZhYjItZmY0YS00ZTc1LThiOTUt@~@
Mzk5MjAxMWM0ZTMwODdjYzdhYjAtZjEx@~@
MC00NDAwLTkzN2EtZTU0N2IzYTY5Mzkx@~@
MzNlNjYyYjAtYTM5Yy00OTJjLWI4Mzgt@~@
ZmRmYzkyMGM4ZGEzM2NlMWVmOTgtMWI3@~@
OS00Y2Q0LWI1NGItYjg2MzkzNDhiMDk1@~@
YmQ1ZjE5NzAtNjliYS00NTRmLTgyNTAt@~@
MjNlZmZkMGVjOWU0MDk1YTAyM2MtZTUz@~@
NS00NTZiLTk4ZjQtNTkyMGE0Y2FiYTdk
9905f1cd-00da-4cc5-800e-b83a3d4fe0ba4cf3d6c2-89be-4d42-b531-a102da796f0b6941cf32-c8ee-4614-995c-850ac4417a12c7c90d0c-96e7-4291-8f8e-3bdad86f8b557966fab2-ff4a-4e75-8b95-3992011c4e3087cc7ab0-f110-4400-937a-e547b3a6939133e662b0-a39c-492c-b838-fdfc920c8da33ce1ef98-1b79-4cd4-b54b-b8639348b095bd5f1970-69ba-454f-8250-23effd0ec9e4095a023c-e535-456b-98f4-5920a4caba7d

在这个范例中java url base64编码五、Java 8 java.util.Base64 编码解码,我们每隔 32 个字符就分割一次。且使用 @~@nn 作为分隔符。

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » 五、Java 8 java.util.Base64 编码解码

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们