美文网首页
Android Base64编码出现换行

Android Base64编码出现换行

作者: 指尖劃過諾言 | 来源:发表于2019-04-25 16:06 被阅读0次

说明:
1、后台请求的Base64的数据,安卓客户端只是做转接作用,比如后台请求到调用中国银行app的Base64数据,要调用中国银行app,在转接数据启动中国银行app时候,app解析数据出错,原因就是转接过程中Base64数据被增加了换行 \n

2、手机拍照身份证时候,把图片用Base64转换一下,如果用的DEFAULT时候,数据里面也有换行

例如:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
               bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
               byte[] datas = baos.toByteArray();
               String imageDatasString = Base64.encodeToString(datas, Base64.DEFAULT);

解决:
Base64编码,发现编码后总是有换行,google后发现字符串过长(一般超过76)时会自动在中间加一个换行符,不能使用默认设置,改为NO_WRAP就可以了

android.util.Base64.encodeToString(string.getBytes(), Base64.NO_WRAP);

注1:Base64几个参数说明

   CRLF 这个参数看起来比较眼熟,它就是Win风格的换行符,意思就是使用CR LF这一对作为一行的结尾而不是Unix风格的LF

   DEFAULT 这个参数是默认,使用默认的方法来加密

   NO_PADDING 这个参数是略去加密字符串最后的”=”

   NO_WRAP 这个参数意思是略去所有的换行符(设置后CRLF就没用了)

   URL_SAFE 这个参数意思是加密时不使用对URL和文件名有特殊意义的字符来作为加密字符,具体就是以-和_取代+和/

注2:深层次原因
Base64是一种字符串编码格式,Base64采用A-Z a-z 0-9 “+“ “/“这一共64个字符来编码原始字符(还有垫字符“=“)。一个字符本身是1个字节,也就是8位,而Base64编码后的一个字符只能表示能表示6位的信息。也就是原始字符串中3字节的信息编码会变成4字节的信息。Base64的主要作用是满足MIME传输需求,在传输过程中都是用ASCII支持的可见字符。Base64是基于字节的编码,所以不同字符集下的相同字符在Base64下可能有着不同编码。根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行 部分Base64编码的java库还按照这个标准实行,所以会有又换行符。

相关文章

  • Android Base64编码出现换行

    说明:1、后台请求的Base64的数据,安卓客户端只是做转接作用,比如后台请求到调用中国银行app的Base64数...

  • 微信小程序字符串去掉空格和换行

    问题:图片Base64编码字符串带有多余的换行和空格出现无法显示,或者显示异常;解决:将字符串replace;如下...

  • base64编码解码原理散图

    base64编码出现原因: base64转码原理000.png base64编码原理: base64转码原理.pn...

  • iOS URL安全的Base64编码、解码

    参考iOS开发探索-Base64编码iOS URL编码&base64编码URL安全的Base64编码,解码 为什么...

  • BASE64 编码简析

    Base64编码: <1>·Base64编码简介: <2>·使用Base64的原因: <3>·编码原理: 成这个字...

  • SMTP整理

    账号:BASE64编码的账号 密码:BASE64编码的密码 快速BASE64编码网址: http://tools....

  • base64

    Python内置的base64可以直接进行base64的编解码: 由于标准的Base64编码后可能出现字符+和/,...

  • base64 和 url base64 和 encodeURIC

    1 先来看base64编码 2 再看url base64编码 可以看出,非url base64不会对斜杠进行编码。...

  • iOS的base64 url safe

    在Android提供了base64 url safe只需要设置相应的FLAG即可: NO_WRAP:不换行NO_P...

  • Base系列加密解密

    Base编码系列:[Base64][Base32] [Base16] [Base64] Base64编码是使用64...

网友评论

      本文标题:Android Base64编码出现换行

      本文链接:https://www.haomeiwen.com/subject/bhyzgqtx.html