DevToolbox

URL 编码详解:何时用 encodeURI 与 encodeURIComponent

2026-05-28

快速回答

快速回答: 查询参数值用 encodeURIComponent,已有结构的完整 URL 用 encodeURI。表单与 API 客户端上线前,在我们的 URL 编码器 中测试字符串。

URL 编码做什么

保留字符(&=?#、空格)会破坏 URL 解析。百分号编码用 %XX 字节序列替换它们(Unicode 使用 UTF-8)。

encodeURI 与 encodeURIComponent

const q = "hello world";
encodeURIComponent(q); // "hello%20world" — safe for ?q=
encodeURI("https://example.com/a b"); // encodes path spaces only

常见 bug

  • 对已编码字符串再编码(hello%20world → 双重编码)
  • 在路径中用 + 表示空格(旧式查询写法,路径不安全)
  • 把 JSON 塞进查询参数却忘记编码

载荷在系统间传递时,可对照 Unicode 转义Base64

常见问题

应该编码整个 URL 吗?

通常只编码组成部分(路径段、查询值)。过度编码 :// 会破坏 URL。

Unicode 字符如何编码?

UTF-8 字节做百分号编码,例如 世界 → %E4%B8%96%E7%95%8C

URL 编码与 Base64 一样吗?

不一样。Base64 用于任意二进制/文本传输;URL 编码保持 URL 可解析。

亲自试试

使用我们的免费URL 编解码——无需注册。

打开URL 编解码 →