Base64 编解码工具使用说明
Base64 是一种把二进制数据转换成 64 个可打印字符的编码方式。它的作用不是加密,而是让数据能够安全地通过只支持文本的通道传输——比如放在 URL 参数里、塞进 JSON 字符串里、写进邮件正文里、或者嵌在 HTML 的 data URI 中。
常见使用场景
- 接口鉴权:HTTP Basic Auth 的用户名密码就是 Base64 编码后放在请求头里的
- 邮件附件:MIME 协议用 Base64 把二进制附件转成文本传输
- 图片内联:把小的图片转成
data:image/png;base64,...直接写进 CSS 或 HTML,省一次请求 - JWT Token:JWT 的头部和载荷部分都是 Base64URL 编码的 JSON
- 规避转义问题:把含特殊字符的内容编码后放进配置文件,避免转义地狱
关于中文乱码问题
很多人用 JavaScript 的 btoa() 编码中文时会报错或得到乱码,原因是 btoa 只接受 Latin-1 范围内的字符,而中文超出这个范围。本工具内部先用 TextEncoder 把文本转成 UTF-8 字节数组,再做 Base64 编码,因此中文、日文、Emoji 都能正确编码和还原。解码时同样先解出字节数组再用 TextDecoder 还原成文本。
标准 Base64 与 URL 安全 Base64 的区别
标准 Base64 的字符集里包含 + 和 /,还有末尾用于补齐的 =。这三个字符在 URL 里有特殊含义:+ 会被解析成空格,/ 是路径分隔符,= 是参数赋值符。所以放进 URL 或文件名时需要用 URL 安全变体,把 + 换成 -、/ 换成 _,并去掉末尾的 =。JWT 用的就是这种变体。
解码时,本工具会把 URL 安全字符自动还原成标准字符再处理,两种变体都能解,不用手动改。
常见问题
Base64 是加密吗?能用来保护密码吗?
不是加密,只是编码。任何人都能无条件解码,不需要密钥。千万不要用 Base64 "加密"密码、密钥或隐私数据。Base64 里的 base64 前面那个 base 指的是 64 个字符,和"基础版加密"没有任何关系。
为什么编码后体积变大了?
Base64 用 4 个字符表示 3 个字节,所以体积会膨胀约 33%。这是用空间换兼容性的必要代价。如果是为了减小体积,应该用 gzip 压缩而不是 Base64。
图片也能编码吗?
这个页面处理的是文本。不过你可以先用工具把图片转成 Base64(或用命令行 base64 image.png),然后单独处理它的文本形式。浏览器端理论上也能读文件,但那属于文件工具,本站会在后续版本加上。
换行会影响解码吗?
不会。解码前工具会自动去掉所有空白字符(空格、换行、制表符),所以无论有没有换行都能正常解开。