Base64出现\r\n的问题
前段时间遇到这么一个小问题:
对比了下接口返回的字符串,和在线工具网站图片转的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后带有\r\n是正常现象,不同的工具类对RFC822的遵循程度不一样
- 可通过replace的方式把\r\n都替换成空字符串,也可以使用apache的Base64工具类来转换