理解 base64 编码 存在的意义
可打印
base64,就是将字节序列编写为可打印的ascii字符,关键就集中在“可打印”三个字上。
计算机中数据存储使用二进制来表示,为了便于阅读,就需要指明哪些二进制数据代表哪个符号,于是ascii 由此诞生。但是 ascii 包含不可见的字符,在某些情况下可能被当做控制字符处理,从而传输错误。
可移植性高
还有一些场景需要纯文本传输,比如:
在 http 协议中使用 json 传输数据,如果需要提交文本参数和图片,将图片转化为 ascii显然是有问题的,而 base64 则可以很好地处理
在 http 响应时,也可以使用base64将文件等二进制数据同字符数据一次返回。
所以说 base64 的特点就在于可移植性高
假如你现在使用的是 MySQL5.5.3 之前的版本,意味着不支持utf8mb4字符集,倘若需要存储的文本中包含 emoji 表情,其中的一种方式就是使用base64编码再存储。
base64 介绍
base64 的字符集由0-9,a-z,A-Z,+,/,组成,=做末尾填充。编码过程就是使用 4 字节的 base64 字符表示 3 字节的 ascii 字符,
很容易理解,base64 有 64个字符,使用 6bit 表示,ascii 有 256个字符,使用 8bit 来表示,两者的最小公倍数是 24,就是 4字节的 base64 字符 或者 3字节的 ascii字符。
转换过程如下,假设现在有个字符串“ab”,ascii 表示即 0110000101100010,拆成 6bit 的 base64有3段,011000,010110,001000,即“YWI”,由于不满4个字符,需要补一个=,最终是“YWI=”。
base64 误区: Base64不是加密算法
把Base64当做加密算法,这是不对的,他只是一种编码方式。便于传输。
参考:
https://blog.csdn.net/qq_35045184/article/details/105401566
https://www.zhihu.com/question/38036594/answer/74917716
共 0 条评论