广民广民
工具实现揭秘开发工具

Base64/URL 编码是怎么实现的

双 codec 四模式实时编解码——中文乱码与 URL-Safe 的坑一次讲清

TL;DR:Base64/URL 编码提供两个 codec(编码器):Base64(编码/解码,支持 URL-Safe 变体)与 URL 编码(编码/解码),方向实时切换、中文无乱码。处理接口鉴权串、URL 参数、邮件附件片段的顺手工具。

⏱️ 30 秒上手

  1. 打开 tools.guangmin.top/tools/base64_url;
  2. 选 codec(Base64 / URL 编码)与方向(编码 / 解码);
  3. 输入即出结果,一键复制;
  4. 解码失败(如输入不是合法 Base64)会明确提示而不是输出乱码。

🔧 它是怎么实现的

三个实现要点:

  1. Base64 的本质是「3 字节 → 4 字符」:每 3 个字节(24 位)切成 4 组各 6 位,每组映射到一个可打印字符。中文按 UTF-8 编码后是 3 字节/字,所以 广 编出来是 5 吨长串的一部分——先 UTF-8 再 Base64 是标准链路,跳过第一步直接按字符串处理必然乱码(这正是大多数在线工具中文解码翻车的原因,本工具用 TextEncoder/TextDecoder 严格走字节层);
  2. URL-Safe 变体解决什么:标准 Base64 里的 + 和 / 在 URL 里有特殊含义(加号是空格、斜杠是路径分隔符),放进 URL 参数会被误解析。URL-Safe 把它们换成 - 和 _——JWT(接口令牌)的载荷段就是用它;
  3. URL 编码是另一码事:%XX 十六进制转义只处理「URL 保留字符与非 ASCII 字符」,可读性比 Base64 好(%E5%B9%BF 一眼看出是 UTF-8 字节)。两个 codec 并列放在一个工具里,因为日常排查经常要来回对照。

📏 边界与限制

项说明
Base64 模式编码 / 解码;URL-Safe 变体支持
URL 模式encodeURIComponent 口径(整段编码)
二进制文件不支持(文本工具;文件转 Base64 后续迭代)
非法输入解码明确报错,不输出乱码

🔗 延伸阅读