快捷搜索: 王者荣耀 脱发

Java8新特性——Base64编码与解码

Java8新特性——Base64编码与解码

一、概述

  1. 定义:Base64是一种可逆的编码方式,是一种用64个ASCII字符来表示任意二进制数据的方法。主要用于将不可打印的字符转换成可打印字符,或者简单的说将二进制数据编码成ASCII字符。
  2. 在Java 8中,Base64编码已经成为Java类库的标准。Java 8 内置了 Base64 编码的编码器和解码器,存放于java.util包。
  3. Base64工具类提供了一套静态方法获取下面三种BASE64编、解码器:
    基本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的解码仅支持A-Za-z0-9+/。 URL:输出映射到一组字符A-Za-z0-9+_,输出是URL和文件。 MIME:输出隐射到MIME友好格式。输出每行不超过76字符,并且使用’ ’并跟随’ ’作为分割。编码输出最后没有行分割。

二、编码与解码

public static void encode() {
          
   
    try {
          
   
        // 1.基本编码与解码
        String encodeStr1 = Base64.getEncoder().encodeToString("Hello World!".getBytes("utf-8"));
        byte[] encodeByte1 = Base64.getDecoder().decode(encodeStr1);
        System.out.println("Base64 编码字符串 (基本) :" + encodeStr1);
        System.out.println("解码为原始字符串: " + new String(encodeByte1, "utf-8"));
        // 2.URL编码与解码
        String encodeStr2 = Base64.getUrlEncoder().encodeToString("http://www.baidu.com".getBytes("utf-8"));
        byte[] encodeByte2 = Base64.getUrlDecoder().decode(encodeStr2);
        System.out.println("Base64 编码字符串 (URL) :" + encodeStr2);
        System.out.println("解码为原始字符串: " + new String(encodeByte2, "utf-8"));
        // 3.MIME编码与解码
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < 10; ++i) {
          
   
            stringBuilder.append(UUID.randomUUID());
        }
        byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");
        String encodeStr3 = Base64.getMimeEncoder().encodeToString(mimeBytes);
        byte[] encodeByte3 = Base64.getMimeDecoder().decode(encodeStr3);
        System.out.println("Base64 编码字符串 (MIME) :" + encodeStr3);
        System.out.println("解码为原始字符串: " + new String(encodeByte3, "utf-8"));
    } catch (UnsupportedEncodingException e) {
          
   
        e.printStackTrace();
    }
}
经验分享 程序员 微信小程序 职场和发展