Base64编码出现换行符
来源:互联网 发布:免费网络英语课堂 编辑:程序博客网 时间:2024/05/13 14:30
概述
Base64是一种字符串编码格式,Base64采用A-Z a-z 0-9 “+“ “/“这一共64个字符来编码原始字符(还有垫字符“=“)。一个字符本身是1个字节,也就是8位,而Base64编码后的一个字符只能表示能表示6位的信息。也就是原始字符串中3字节的信息编码会变成4字节的信息。Base64的主要作用是满足MIME传输需求,在传输过程中都是用ASCII支持的可见字符。Base64是基于字节的编码,所以不同字符集下的相同字符在Base64下可能有着不同编码
问题描述
在进过Base64编码后的字符串无法解码,解码时提示RuntimeError
将编码后的字符串输出后发现字符串中存在换行符
测试程序
import it.sauronsoftware.base64.Base64;public class TestBase64 { public static void main(String[] args){ String message = "{\"begin_time\":\"2016-09-13T19:06:00+08:00\",\"end_time\":\"2016-10-29T19:06:00+08:00\",\"name\":\"testExam\",\"score\":[{\"score\":\"0\",\"qid\":\"1\"}],\"questions\":[{\"name\":\"A+B\",\"qid\":\"1\"}],\"eid\":\"1\"}"; System.out.println(Base64.encode(message)); }}
程序输出
eyJiZWdpbl90aW1lIjoiMjAxNi0wOS0xM1QxOTowNjowMCswODowMCIsImVuZF90aW1lIjoiMjAxNi0xMC0yOVQxOTowNjowMCswODowMCIsIm5hbWUiOiJ0ZXN0RXhhbSIsInNjb3JlIjpbeyJzY29yZSI6IjAiLCJxaWQiOiIxIn1dLCJxdWVzdGlvbnMiOlt7Im5hbWUiOiJBK0IiLCJxaWQiOiIxIn1dLCJlaWQiOiIxIn0=
观察测试结果
- base64编码后出现了换行符
- 如果去除换行符 字符串能正常解码
原因分析
根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行
部分Base64编码的java库还按照这个标准实行
解决方案
换用Apache的 commons-codec.jar, Base64.encodeBase64String(byte[])得到的编码字符串是不带换行符的
参考
https://segmentfault.com/q/1010000000094848
http://blog.csdn.net/uucai/article/details/45871833
1 0
- Base64编码出现换行符
- Android Base64编码出现换行
- Android Base64编码出现换行
- 为什么Base64编码有回车换行符
- 为什么Base64编码有回车换行符
- Base64编码有回车换行符
- 为什么Base64编码有回车换行符
- base64编码换行问题
- Base64编码的 换行 转义
- Base64编码有时会默认换行
- 碰到java中base64编码换行
- Base64编码有时会默认换行
- Base64 编码图片被自动换行
- base64加密后会有换行符
- android.util.Base64编码有时会默认换行
- android.util.Base64编码有时会默认换行
- android.util.Base64编码有时会默认换行
- Base64 编码换行和+号遍空格的处理
- Python生成随机数
- C#之WinForm基础 设置文件对话框只能看到所有类型的文件
- WSAAsyncSelect模型
- 设计模式——桥接模式(C++)
- BNU20410 UVA11992 线段树区间更新
- Base64编码出现换行符
- C#之WinForm基础 设置文件对话框只能看到一种指定类型的文件
- 伸展树(splay树)
- MAC之Sublime Text 2插件安装与步骤
- Linux(二)服务器运行环境配置
- 奇虎360_2017校园招聘笔试编程题第一题
- elasticsearch系列之排序
- JQuery 的小技巧
- 数字三角形--hihocoder(DP)