Base64 和 URL 编码有什么区别?各自该在什么时候用

两种编码,两个任务 Base64 和 URL 编码都会把「不安全」的字符替换成安全字符。这种表面相似,正是它们经常被搞混的原因——要么该用一种却用了两种,要么干脆用错了。 一句话版本: Base64 让二进制数据能通过只支持文本的通道 百分号编码 让文本能安全地放进 URL 各自到底做了什么 Base64 用 64 个字符的字母表(A–Z a–z 0–9 + /,末尾用 = 补齐)重写字节。每 3 个字节变成 4 个字符,体积因此增加约 33%。 Man → TWFu Hello → SGVsbG8= 百分号编码把在 URL 里不安全的字符替换成 % 加两位十六进制数(对应 UTF-8 字节)。 a b → a%20b 书签管理 → %E4%B9%A6%E7%AD%BE%E7%AE%A1%E7%90%86 a&b → a%26b 关键区别 Base64 百分号编码 目的 让二进制穿过文本通道 让文本安全地待在 URL 里 字符集 固定的 64 个字符 任意字节,写成 %XX 体积变化 +33% 变化很大 谁能还原 任何人 任何人 提供安全性 否 否 常见位置 JSON 字段、data URI、邮件附件、JWT 查询参数、路径片段 什么时候用 Base64 把小块图片以 data URI 内嵌进 CSS 或 HTML 在 JSON 里传文件、缩略图或签名 通过 MIME 发邮件附件 构造 Authorization: Basic 请求头 JWT 的 header 与 payload 段 需要双向转换时,直接用 Base64 编解码工具,不用装任何东西。 ...

September 12, 2026 · 1 min · 212 words · NavProject Team

Base64 编码是什么?原理、用途与在线工具使用指南

Base64 要解决什么问题 很多系统只传"文本":邮件协议为 7 位 ASCII 设计,JSON 定义为文本,HTML 属性里放的是字符串。但我们真正想传输的东西——图片、PDF、密钥、二进制协议数据——是字节流,里面很容易混进控制字符、引号和换行。 把原始二进制直接塞进文本通道,迟早会出问题:换行被改写、引号提前结束字符串、代理服务器吃掉一个字节。Base64 的做法是:只用 64 个所有文本系统都认的字符重新表示这些字节。 A–Z a–z 0–9 + / 末尾的 = 只用于补齐。整个字母表就这些。 Base64 的原理 Base64 每处理 3 个字节(24 位),就把它们重写成 4 个字符(4 × 6 位): 输入 位数 输出 Man 24 位 TWFu Ma 16 位 + 补齐 TWE= M 8 位 + 补齐 TQ== 由此直接得到两个结论: 结果大约比原文大 33%(3 个字节变成 4 个字符); = 的数量告诉解码器最后一组缺了几字节,一个或两个 = 表示末尾不完整。 Base64 是可逆的、完全公开的编码,没有密钥,也没有任何保密性。 日常开发中在哪里遇到 Base64 Data URI:background-image: url(data:image/png;base64,...) 把小图标直接内嵌进 CSS。 JSON 接口:在 JSON 字段里传文件、缩略图或签名。 邮件附件:MIME 用 Base64 编码附件,让它们能穿过只支持文本的邮件服务器。 HTTP Basic 认证:Authorization: Basic dXNlcjpwYXNz 就是 user:pass 的编码结果。 JWT:Token 的 header 和 payload 两段都是 Base64URL 字符串。 Base64 不是加密 这是最重要的一点:Base64 不提供任何保密性。 ...

September 10, 2026 · 1 min · 209 words · NavProject Team