博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java基础】sun.misc.BASE64和Java 8 java.util.Base64区别
阅读量:6799 次
发布时间:2019-06-26

本文共 1146 字,大约阅读时间需要 3 分钟。

今天项目中遇到了一个问题,同样的使用Base64 encode的时候,发现有二个Base64类可以encode,使用misc的 BASE64Encoder 方法 encode,生成的String和util包的Base64生成String有什么区别呢?

 写了个程序,把一段内容使用不同的方法encode,如下图所示:misc的Base64会自动加\n, 为什么要这样呢?

简单事例代码:

byte[] bytes = new byte[57];String enc1 = new sun.misc.BASE64Encoder().encode(bytes);String enc2 = new String(java.util.Base64.getMimeEncoder().encode(bytes),                         StandardCharsets.UTF_8);System.out.println("enc1 = <" + enc1 + ">");System.out.println("enc2 = <" + enc2 + ">");System.out.println(enc1.equals(enc2));

输出:

byte[] bytes = new byte[57];String enc1 = new sun.misc.BASE64Encoder().encode(bytes);String enc2 = new String(java.util.Base64.getMimeEncoder().encode(bytes),                         StandardCharsets.UTF_8);System.out.println("enc1 = <" + enc1 + ">");System.out.println("enc2 = <" + enc2 + ">");System.out.println(enc1.equals(enc2));
sun.misc.BASE64Encoder encode时每76个字符就会生成一个'\n',java.util.Base64不会有换行符的产生。
java.util.Base64的作者认为 sun.misc.BASE64Encoder 这个做法是个bug,我也认为是的,因为在我使用sun.misc.BASE64Encoder encode之后的String,在HTTP请求Head中放时 \n HTTP请求检查头部参数会报错,不认换行符。

参考:

转载于:https://www.cnblogs.com/zhengwangzw/p/10908417.html

你可能感兴趣的文章
Spring中使用ActiveMQ
查看>>
【数据结构】Java语言描述-循环链表和双向链表操作
查看>>
什么是跨域以及几种简单解决方案
查看>>
reactor-netty中TcpClient的create过程
查看>>
使用vue开发桌面应用(electron)
查看>>
pipenv 更优雅的管理你的python开发环境
查看>>
微信小程序生成二维码工具
查看>>
weex-android添加返回按钮监听
查看>>
Android精品源码,微信红包动画动画效果库输入框风格新闻客户端组件化方案...
查看>>
CSS相关文章
查看>>
Spark User-guide Summary - Streaming
查看>>
认识RESTful
查看>>
【呆萌の整理】Linux入门知识点整理之系统、编程
查看>>
tinyscrollbar锁滚动问题引出对wheel事件的探索
查看>>
IDE下的MapReduce开发
查看>>
JAVA IO源码学习系列一(InputStream)
查看>>
Mysql 配置的工作原理
查看>>
JS PopUnder 原理研究:初探
查看>>
前端面试回顾(3)---事件绑定及相关兼容性问题
查看>>
深入认识vue-cli:能做的不仅仅是初始化vue工程
查看>>