在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编解码表相关推荐

  1. Golang Base64编码解码

    Golang Base64编码解码 Golang内置支持Base64编码解码,Go的encoding/base64包遵照RFC 4648规范实现了base64编码解码功能,包括标准方式以及URL/文件 ...

  2. Javascript中Base64编码解码的使用实例

    Javascript为我们提供了一个简单的方法来实现字符串的Base64编码和解码,分别是window.btoa()函数和window.atob()函数. 1 var encodedStr = win ...

  3. linux中常用的加密总结--base64编码解码与openssl实现

    linux中常用的加密总结–base64编码解码与openssl实现 一.base64 !!!base64是一种数据编码方式,可逆,不是严格意义上的加密算法,不能作为安全加密使用 -d,–decode ...

  4. Base64编码/解码VB6超精简版(适用于中、英文)

    上次因为要编写自动登录邮箱的程序,需要Base64编码,但是我看了几种版本的VB下Base64编码的程序,发现要么就是太冗长,要么就是不支持中文,要么根本不能用,于是我想求人不如求己,便仔细研究了一下 ...

  5. Java工程中引用Base64编码解码小记

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一. Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两 ...

  6. 一些Base64编码/解码及数据压缩/解压方面的知识

    一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...

  7. Delphi Base64编码/解码及ZLib压缩/解压

    最近在写的程序与SOAP相关,所以用到了一些Base64编码/解码及数据压缩/解压方面的知识. 在这里来作一些总结: 一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当 ...

  8. delphi Base64编码/解码及数据压缩/解压知识

    一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...

  9. openssl算法 —— 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

    openssl 加密字符串的方法: 一.利用openssl命令进行BASE64编码解码(base64 encode/decode): 1. BASE64编码命令 对字符串'abc'进行base64编码 ...

  10. Java Base64 编码解码方案总结

    转载自  Java Base64 编码解码方案总结 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便.在实际应 ...

最新文章

  1. java计算器的重点解决问题_java计算器问题
  2. websocket在.net4.5中实现的简单demo
  3. mahout 算法集
  4. 站在巨人肩膀上的意思就是拒绝重复造轮子,分享12个常见的js插件
  5. Auto.js Pro如何连接VS Code插件
  6. “自启动”树莓派上的 .NET Core 3.0 环境
  7. 自增主键与UUID的优缺点
  8. 3 QM配置-质量计划配置-编辑特性属性的选择集
  9. c语言程序设计一至六章测验,c语言程序设计1-6章.ppt
  10. PS如何调整图片像素大小
  11. vulnstack4渗透-内网篇
  12. 龙芯cpu 3A3000搭建electron运行环境
  13. MIT团队开发用脑电波和手势控制机器人的系统
  14. Windows Server 2012 和 System Center 2012 SP1,Virtual Machine Manager 中启用的软件定义的网络...
  15. H.264中SPS、PPS和IDR
  16. 理论+实操: MySQL索引与事务、视图、存储过程(软件开发用的多)、存储引擎MyISAM和InnoDB
  17. 撞了南墙要记得回头看看
  18. UI设计之什么是设计
  19. 【网络安全模型介绍】PDR、P2DR、PDR2、PDR2A、WPDRRC
  20. 我们为什么要做智慧社区,智慧社区主要服务在哪些行业

热门文章

  1. WYSE POCKETCLOUD手把手教你如何用手机遥控你的电脑!!(转)
  2. 我的世界只支持java8_我的世界minecraft 1.8以上版本forge安装支持哪一种java?7还是8?...
  3. value函数介绍和实例
  4. python 函数基础
  5. Linux_Ubuntu快捷键截屏
  6. element-ui的select组件设置预选项没问题,但重新选中不改变的问题解决
  7. Python 根据起始时间和结束时间计算时长
  8. BUUCTF_Misc题目题解记录
  9. elementUI中的Backtop回到顶部
  10. Rds mysql 内存配置_RDS MySQL内存管理