Base64、URL 编码、十六进制:三种编码别混用

Base64、URL 百分号编码与十六进制都能把内容变成「安全文本」,但目的完全不同。本文讲清三者分工、典型误用与选择依据。

核心要点

  • Base64 把任意二进制变成纯文本,代价是体积增加约三分之一;URL 编码只对特殊字符做转义,其余保持原样。
  • Base64 是编码而非加密,任何人都能解码,不能用来保护敏感内容。
  • Base64 结果要放进网址或 JWT 时必须改用 Base64URL:把 + 和 / 换成 - 和 _,并去掉末尾的填充符。

把二进制或特殊字符变成「能安全通过文本通道」的形式,这类处理统称编码。Base64、URL 编码(百分号编码)与十六进制经常被混为一谈,但它们解决的其实是三件事,混用会导致收端还原失败或体积白白膨胀。

三者怎么区分

编码方式解决什么问题代价与注意
Base64把任意二进制(图片、证书、文件)变成纯文本体积增加约 1/3,含 + / = 字符
URL 编码让空格、中文、& 等能安全放进网址只对特殊字符转义,其余保持原样
十六进制编码逐字节查看与核对二进制内容体积翻倍,便于人读不便传输
Base64URLBase64 结果要放进 URL 或 JWT把 +/ 换成 -_ 并去掉填充符
Unicode 转义把中文写成 \uXXXX 写进源码适合代码与配置,不适合传输

典型误用

需要按字节核对内容时用文本转十六进制;邮件正文走 MIME 时可查Quoted-Printable 编码;短链与短 ID 场景多见Base62 编码

常见问题

Base64 是加密吗?
不是。Base64 只是一种编码,把二进制数据映射成 64 个可打印字符,任何人都能解码。需要保密时应使用 AES 等对称加密或 HTTPS 传输加密。
为什么 Base64 之后的字符串放进网址会出问题?
标准 Base64 使用 + 和 / 两个字符,它们在 URL 中有特殊含义,末尾的 = 填充符也可能被截断。应改用 Base64URL 变体,用 - 和 _ 替代这两个字符,并去掉填充。
URL 编码和百分号编码是一回事吗?
通常指的是同一件事:把非 ASCII 字符与保留字符转换成 % 加两位十六进制的形式。区别在于所依据的字符集范围,百分号编码更严格,会把更多字符一并转义。
十六进制编码适合用来传输数据吗?
不适合。十六进制每个字节用两个字符表示,体积会翻倍;它的价值在于让二进制内容可被人工阅读与逐字节核对。

最后更新:2026-09-19

相关工具

相关指南

‹ 返回知识库