本地处理
DEVDESK / GUIDES

Base64 与 Base64URL:中文乱码、补位和往返验证

同一份数据放进 URL 后解码失败,或解码出乱码,常见原因是选错变体或把二进制当文本。先固定原文、变体和预期输出,再做往返检查。

打开工具:Base64 编解码

1. 用中英文混合文本建立基准

在 Base64 工具中选标准 Base64,粘贴第一行并编码,结果应与第二行一致。再把第二行粘回输入框解码,确认标点、空格和中文都保留。不要把两行一起当作输入。

Hello, 世界
SGVsbG8sIOS4lueVjA==

2. Base64URL 更换两个字符

标准 Base64 使用 + 和 /;Base64URL 使用 - 和 _。本站 Base64URL 输出还会省略尾部 =。有些输入只用字母和数字,两种结果看起来几乎相同,不能据此推断变体。

用下面的三个问号重复实验,可以直接看到 / 与 _ 的区别。每次只输入第一行的文本。

???
Base64:    Pz8/
Base64URL: Pz8_

3. 补位不是可随意添加的内容

尾部 = 与编码后的长度有关。解码器会检查字符表、长度与补位是否合法;复制时漏掉字符和选择错误变体,都可能造成错误。不要通过随意添加 = 来掩盖被截断的数据。

处理 JWT 时,只把 Header 或 Payload 的一个片段交给 Base64URL 解码。完整 JWT 包含句点和多个片段,更适合直接使用 JWT 工具。

4. 合法 Base64 不一定是 UTF-8 文本

图片、压缩包或任意二进制也能进行 Base64 编码。本站解码结果必须是 UTF-8 文本,因此有些合法的二进制编码会被拒绝。这与字节损坏是不同的问题。

data:image/png;base64, 是 Data URL 前缀,不属于编码正文。即使移除前缀,PNG 字节仍不是此文本解码器的目标输入。

5. 验证编码链,并避免当作加密

保存原始文本,依次执行编码和解码,再比较结果。若数据经过表单或 URL 参数,额外检查 + 是否被当作空格处理;应在传输边界采用正确的 URL 编码。

Base64 不使用密钥,任何拿到编码文本的人都能解码。它解决表示和传输问题,不能保护密码或替代加密。

继续动手验证