什么是 Base64?

1. 什么是 Base64

Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方式,是从二进制数据到字符的过程。原则上,计算机中所有内容都是二进制形式存储的,所以所有内容(包括文本、影音、图片等)都可以用 Base64 来表示。

2. 适用场景

  1. Base64 一般用于在 HTTP 协议下传输二进制数据。由于 HTTP/1 协议是文本协议,所以在 HTTP 下传输二进制数据需要将二进制数据转化为字符数据。网络传输只能传输可打印字符,在 ASCII 码中规定,0-31、128 这 33 个字符属于控制字符,32~127 这 95 个字符属于可打印字符。那么其它字符怎么传输呢,Base64 就是其中一种方式。

  2. 将图片等资源文件以 Base64 编码形式直接放于代码中,使用的时候反 Base64 后转换成 Image 对象使用。

  3. 偶尔需要用这条纯文本通道传一张图片之类的情况发生的时候,就会用到 Base64,比如多功能 Internet 邮件扩充服务(MIME)就是用 Base64 对邮件的附件进行编码的。

3. Base64 编码原理

Base64 编码之所以称为 Base64,是因为其使用 64 个字符来对任意数据进行编码,同理有 Base32、Base16 编码。它把 3 个字节(24 bit)分成 4 组,每组 6 bit,再映射到 64 个字符。

4. 优缺点

  • 优点:可以将二进制数据转化为可打印字符,方便传输数据,对数据进行简单的加密,肉眼安全。
  • 缺点:内容编码后体积变大(膨胀约 33%),编码和解码需要额外工作量。

补充:在 CSS 中常见的 Base64 用法是 background: url(data:image/png;base64,...),把图标直接嵌入 CSS,减少一次 HTTP 请求;代价是 CSS 文件变大、无法被浏览器单独缓存,一般只用于非常小的图标(< 2KB)。