• 关于base64的一个小细节


    Base64出现 的问题

    前段时间遇到这么一个小问题:

    后台接口返回一个图片的base64串,同事拿着这个字符串,找了一个在线图片和Base64字符串互转的工具网站,想将字符串转成图片,死活转不了,一度怀疑生成代码有问题。 o(╯□╰)o

    对比了下接口返回的字符串,和在线工具网站图片转的base64字符串,发现:接口返回的字符串里面多了很多 。

    难道是这些多余的 导致的?

    于是在返回前把base64传做一点处理

    picBase64Str.replaceAll("
    ", "").replaceAll("
    ", "");
    

    处理之后,返回的字符串,可以在在线工具网站上正常转换成图片了。

    为什么会这样?

    代码中使用的是JDK自带的 sun.misc.BASE64Encoder 把图片转换成base64的。

    改用 org.apache.commons.codec.binary.Base64 转换得到的base64字符串就不包含

    查了一下维基百科,是这样解释的:

    完整的Base64定义可见RFC 1421和RFC 2045。编码后的数据比原始数据略长,为原来的4/3。在电子邮件中,根据RFC 822规定,每76个字符,还需要加上一个回车换行。可以估算编码后数据长度大约为原长的135.1%。

    换行符和空格可以存在于任何地方,但在解码时将被忽略

    小结

    • base64后带有 是正常现象,不同的工具类对RFC822的遵循程度不一样
    • 可通过replace的方式把 都替换成空字符串,也可以使用apache的Base64工具类来转换
  • 相关阅读:
    路障【SPFA】
    路障【SPFA】
    糟糕的一天【栈】
    糟糕的一天【栈】
    糟糕的一天【栈】
    糟糕的一天【栈】
    2018年暑假 纪中培训总结
    2018年暑假 纪中培训总结
    2018年暑假 纪中培训总结
    仪仗队【数论】
  • 原文地址:https://www.cnblogs.com/yejg1212/p/11926649.html
Copyright © 2020-2023  润新知