说明:
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就没用了)