Base64编码包含换行符问题

在进行fdfs存储的时候,将前端传过来的Base64进行解码时出现报错

1
2
3
4
java.lang.IllegalArgumentException: Illegal base64 character a
at java.util.Base64$Decoder.decode0(Base64.java:714) ~[?:1.8.0_201]
at java.util.Base64$Decoder.decode(Base64.java:526) ~[?:1.8.0_201]
at java.util.Base64$Decoder.decode(Base64.java:549) ~[?:1.8.0_201]

经过排查发现,这次前端将ocr给的Base64里面有换行符,导致解码出现错误。
Base64编码的包很多,稍有不注意就会得不到期望的结果引起bug,这是由于根据RFC822规定,Base64Encoder编码每76个字符,还需要加上一个回车换行,部分Base64编码的java库还按照这个标准实行。
如果不想换行,可以使用Apache的common-codec.jar.

这边我们是从其他处的到的编码,所以我们需要去除回车符,然后再进行解码就可以。

1
imgBase64 = imgBase64.replaceAll("[\\s*\t\n\r↵]", "");

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 337455685@qq.com

文章标题:Base64编码包含换行符问题

文章字数:226

本文作者:wjy

发布时间:2020-02-21, 11:27:23

最后更新:2020-02-21, 15:20:37

原始链接:https://chengnj.github.io/%E7%AC%94%E8%AE%B0/2020/base64q1/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏