2.jdk1.8新增Base64 api学习

  • 什么是Base64编码 Base64是⽹络上最常⻅的⽤于传输8Bit字节码的编码⽅式之⼀,Base64就是 ⼀种基于64个可打印字符来表示⼆进制数据的⽅法 基于64个字符A-Z,a-z,0-9,+,/的编码⽅式, 是⼀种能将任意⼆进制数据⽤64种字元组合成字符串的⽅法,⽽这个⼆进制数据和字符串资料之 间是可以互相转换的,在实际应⽤上,Base64除了能将⼆进制数据可视化之外,也常⽤来表示字 串加密过后的内容

早期java要使⽤JDK⾥sun.misc套件下的BASE64Encoder和BASE64Decoder这两个类

        BASE64Encoder encoder = new BASE64Encoder();
        BASE64Decoder decoder = new BASE64Decoder();
        String text = "哈哈哈";
        byte[] textByte = text.getBytes("UTF-8");
        //编码
        String encodedText = encoder.encode(textByte);
        System.out.println(encodedText);
        //解码
        System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));
  • 缺点:编码和解码的效率⽐较差,公开信息说以后的版本会取消这个⽅法
  • Apache Commons Codec有提供Base64的编码与解码 缺点:是需要引⽤Apache Commons Codec

jdk1.8之后

  • Jdk1.8的java.util包中,新增了Base64的类
  • 好处:不⽤引包,编解码销量远⼤于 sun.misc 和 Apache Commons Codec
 Base64.Decoder decoder = Base64.getDecoder();
 Base64.Encoder encoder = Base64.getEncoder();
 String text = "哈哈哈";
 byte[] textByte = text.getBytes("UTF-8");
 //编码
 String encodedText = encoder.encodeToString(textByte);
 System.out.println(encodedText);
 //解码
 System.out.println(new String(decoder.decode(encodedText), "UTF8"));

猜你喜欢

转载自blog.csdn.net/qq_37790902/article/details/103309071