android中base64编码解码,Andorid自带的Base64编解码表
在Android提供的android.util.Base64类中,提供了base64基本的几种编解码格式,源码如下
/**
* Default values for encoder/decoder flags.
*/
public static final int DEFAULT = 0; // 此flag下编码完成的String中会包含换行符\n,+号,末尾以“=”结束
/**
* Encoder flag bit to omit the padding '=' characters at the end
* of the output (if any).
*/
public static final int NO_PADDING = 1; //此flag下最终的编码字符串会包含换行符\n,但是末尾去掉了“=”
/**
* Encoder flag bit to omit all line terminators (i.e., the output
* will be on one long line).
*/
public static final int NO_WRAP = 2; // 此flag下最终编码字符串不包含换行符\n,+号,且字符串全在一行,设置此flag后CRLF flag无效
/**
* Encoder flag bit to indicate lines should be terminated with a
* CRLF pair instead of just an LF. Has no effect if {@code
* NO_WRAP} is specified as well.
*/
public static final int CRLF = 4; // 编码后用CR LF这一对作为一行末尾的换行,而不是unix风格的LF换行
/**
* Encoder/decoder flag bit to indicate using the "URL and
* filename safe" variant of Base64 (see RFC 3548 section 4) where
* {@code -} and {@code _} are used in place of {@code +} and
* {@code /}.
*/
public static final int URL_SAFE = 8; // 编码后,用-代替+,用_代替·/,避免请求是url编码造成的传输问题,包含换行符\n
/**
* Flag to pass to {@link Base64OutputStream} to indicate that it
* should not close the output stream it is wrapping when it
* itself is closed.
*/
public static final int NO_CLOSE = 16;
附上Base64的元码表【from wiki】
image.png
小结
用flag Default编码后,字符串中带有+号和\n换行符,发起网络请求时,当以base64字符串作为参数值传递时,url为了传输安全会把+号全部变成空格,在接收端就会产生各种问题,且前端用的部分的Base64解码库不支持\n,当字符串中含有\n时无法解码还原为图片。所以Base64编码时建议使用NO_WRAP | URL_SAFE,这样可以避免较多问题。
android中base64编码解码,Andorid自带的Base64编解码表相关推荐
- Golang Base64编码解码
Golang Base64编码解码 Golang内置支持Base64编码解码,Go的encoding/base64包遵照RFC 4648规范实现了base64编码解码功能,包括标准方式以及URL/文件 ...
- Javascript中Base64编码解码的使用实例
Javascript为我们提供了一个简单的方法来实现字符串的Base64编码和解码,分别是window.btoa()函数和window.atob()函数. 1 var encodedStr = win ...
- linux中常用的加密总结--base64编码解码与openssl实现
linux中常用的加密总结–base64编码解码与openssl实现 一.base64 !!!base64是一种数据编码方式,可逆,不是严格意义上的加密算法,不能作为安全加密使用 -d,–decode ...
- Base64编码/解码VB6超精简版(适用于中、英文)
上次因为要编写自动登录邮箱的程序,需要Base64编码,但是我看了几种版本的VB下Base64编码的程序,发现要么就是太冗长,要么就是不支持中文,要么根本不能用,于是我想求人不如求己,便仔细研究了一下 ...
- Java工程中引用Base64编码解码小记
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一. Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两 ...
- 一些Base64编码/解码及数据压缩/解压方面的知识
一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...
- Delphi Base64编码/解码及ZLib压缩/解压
最近在写的程序与SOAP相关,所以用到了一些Base64编码/解码及数据压缩/解压方面的知识. 在这里来作一些总结: 一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当 ...
- delphi Base64编码/解码及数据压缩/解压知识
一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...
- openssl算法 —— 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
openssl 加密字符串的方法: 一.利用openssl命令进行BASE64编码解码(base64 encode/decode): 1. BASE64编码命令 对字符串'abc'进行base64编码 ...
- Java Base64 编码解码方案总结
转载自 Java Base64 编码解码方案总结 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便.在实际应 ...
最新文章
- java计算器的重点解决问题_java计算器问题
- websocket在.net4.5中实现的简单demo
- mahout 算法集
- 站在巨人肩膀上的意思就是拒绝重复造轮子,分享12个常见的js插件
- Auto.js Pro如何连接VS Code插件
- “自启动”树莓派上的 .NET Core 3.0 环境
- 自增主键与UUID的优缺点
- 3 QM配置-质量计划配置-编辑特性属性的选择集
- c语言程序设计一至六章测验,c语言程序设计1-6章.ppt
- PS如何调整图片像素大小
- vulnstack4渗透-内网篇
- 龙芯cpu 3A3000搭建electron运行环境
- MIT团队开发用脑电波和手势控制机器人的系统
- Windows Server 2012 和 System Center 2012 SP1,Virtual Machine Manager 中启用的软件定义的网络...
- H.264中SPS、PPS和IDR
- 理论+实操: MySQL索引与事务、视图、存储过程(软件开发用的多)、存储引擎MyISAM和InnoDB
- 撞了南墙要记得回头看看
- UI设计之什么是设计
- 【网络安全模型介绍】PDR、P2DR、PDR2、PDR2A、WPDRRC
- 我们为什么要做智慧社区,智慧社区主要服务在哪些行业
热门文章
- WYSE POCKETCLOUD手把手教你如何用手机遥控你的电脑!!(转)
- 我的世界只支持java8_我的世界minecraft 1.8以上版本forge安装支持哪一种java?7还是8?...
- value函数介绍和实例
- python 函数基础
- Linux_Ubuntu快捷键截屏
- element-ui的select组件设置预选项没问题,但重新选中不改变的问题解决
- Python 根据起始时间和结束时间计算时长
- BUUCTF_Misc题目题解记录
- elementUI中的Backtop回到顶部
- Rds mysql 内存配置_RDS MySQL内存管理