关于base64的一个小细节
时间:2019-11-25
本文章向大家介绍关于base64的一个小细节,主要包括关于base64的一个小细节使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Base64出现\r\n的问题
前段时间遇到这么一个小问题:
后台接口返回一个图片的base64串,同事拿着这个字符串,找了一个在线图片和Base64字符串互转的工具网站,想将字符串转成图片,死活转不了,一度怀疑生成代码有问题。 o(╯□╰)o
对比了下接口返回的字符串,和在线工具网站图片转的base64字符串,发现:接口返回的字符串里面多了很多\r\n。
难道是这些多余的\r\n导致的?
于是在返回前把base64传做一点处理
picBase64Str.replaceAll("\r", "").replaceAll("\n", "");
处理之后,返回的字符串,可以在在线工具网站上正常转换成图片了。
为什么会这样?
代码中使用的是JDK自带的 sun.misc.BASE64Encoder 把图片转换成base64的。
改用 org.apache.commons.codec.binary.Base64 转换得到的base64字符串就不包含\r\n
查了一下维基百科,是这样解释的:
完整的Base64定义可见RFC 1421和RFC 2045。编码后的数据比原始数据略长,为原来的4/3。在电子邮件中,根据RFC 822规定,每76个字符,还需要加上一个回车换行。可以估算编码后数据长度大约为原长的135.1%。
换行符和空格可以存在于任何地方,但在解码时将被忽略
小结
- base64后带有\r\n是正常现象,不同的工具类对RFC822的遵循程度不一样
- 可通过replace的方式把\r\n都替换成空字符串,也可以使用apache的Base64工具类来转换
原文地址:https://www.cnblogs.com/yejg1212/p/11926649.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 微信小程序登录与注册验证码倒计时的效果实现
- Android仿微信朋友圈全文、收起功能的实例代码
- TextView实现图文混合编排的方法
- 小程序云函数调用http或https请求外部数据
- 详解Android中图片的三级缓存及实例
- 借助云开发实现小程序的登陆注册功能
- TextView显示文本控件两种方法 TextView显示link的方法
- Java入门005~Springboot2.2.4引入freemarker模板
- TabLayout使用方法详解
- Java入门006~springboot+freemarker+bootstrap快速实现管理后台
- Java入门007~springboot+freemarker+bootstrap快速实现分页功能
- ToolBar使用方法详解
- Android 中WallpaperManager用法实例
- Android实现屏幕各尺寸的获取的示例
- Android 中ContentProvider的实例详解