Base64编码换行符问题解决
2018-03-14 22:06
1881 查看
概述
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)); } }
程序输出
eyJiZWdpbl90aW1lIjoiMjAxNi0wOS0xM1QxOTowNjowMCswODowMCIsImVuZF90aW1lIjoiMjAx Ni0xMC0yOVQxOTowNjowMCswODowMCIsIm5hbWUiOiJ0ZXN0RXhhbSIsInNjb3JlIjpbeyJzY29y ZSI6IjAiLCJxaWQiOiIxIn1dLCJxdWVzdGlvbnMiOlt7Im5hbWUiOiJBK0IiLCJxaWQiOiIxIn1d LCJlaWQiOiIxIn0=
观察测试结果
base64编码后出现了换行符如果去除换行符 字符串能正常解码
原因分析
根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行部分Base64编码的java库还按照这个标准实行
解决方案
换用Apache的 commons-codec.jar, Base64.encodeBase64String(byte[])得到的编码字符串是不带换行符的关注微信公众号和今日头条,精彩文章持续更新中。。。。。相关文章推荐
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)
- BASE64编码的图片在网页中的显示问题的解决
- java base64 编码 解码, HTTP传送解决+号 \n\r 问题,查询处理
- base64编码解码-解决xml输出转义问题
- 通过base64编码解决java的webservice调用中文参数乱码问题
- 用javascript实现Base64编码(解决中文问题C#里解码) 转
- JS base64加解密解决传输的url各种编码问题
- Base64编码详解及其变种(解决加号在URL变空格问题)
- Base64编码详解及其变种(解决加号在URL变空格问题)
- BASE64编码的图片在网页中的显示问题的解决
- Base64编码详解及其变种(解决加号在URL变空格问题)
- PHP 发送UTF-8编码中文邮件标题乱码问题解决
- Filter永久解决编码问题
- base64编码,中文乱码解决方法
- 彻底解决Eclipse不能为JSP编辑器指定编码的问题(设置UTF8无效)
- java编码问题的解决办法!!
- Mysql 字符串编码,解决各种乱码问题
- 从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题
- Rewrite编码问题解决