1、编码标准有以下几种:
CRLF
Win风格的换行符,意思就是使用CR和LF这一对作为一行的结尾而不是Unix风格的LF。
CRLF是Carriage-Return Line-Feed的缩写,意思是回车(\r)换行(\n)。
也就是说,Window风格的行结束标识符是\r\n,Unix风格的行结束标识符是\n。
DEFAULT
这个参数是默认,使用默认的方法来加密
NO_PADDING
这个参数是略去加密字符串最后的“=”
NO_WRAP
这个参数意思是略去所有的换行符(设置后CRLF就没用了)
URL_SAFE
这个参数意思是加密时不使用对URL和文件名有特殊意义的字符来作为加密字符,具体就是以-和_取代+和/。
NO_CLOSE
通常与`Base64OutputStream`一起使用,
是传递给`Base64OutputStream`的标志指示它不应关闭正在包装的输出流。
2、目前,Data URI scheme支持的类型有:
data:,文本数据
data:text/plain,文本数据
data:text/html,HTML代码
data:text/html;base64,base64编码的HTML代码
data:text/css,CSS代码
data:text/css;base64,base64编码的CSS代码
data:text/javascript,Javascript代码
data:text/javascript;base64,base64编码的Javascript代码
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据
3、问题总结:
android端显示base64字符串时,不需要追加scheme头;这个scheme头 只是给网页用的。
问题1:接口发返回的base64含有大量\n,导致android端无法解码(6种编码标准都尝试了);
解决办法:
1、后端编码时,去掉\n;(最佳)
2、android端使用 replace(“\n”,“”)替换掉;(不建议,容易报错;)
参考:
在线工具: