0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
配置
编码和解码用于安全使用 URL 的文本字符串。组件 编码所有的保留字符 — 非常适合用于 query 参数值。完整的 URL 保留了 URL 的结构(方案、条形号、问号)。使用 + 表示 HTML 表单中的空格(application/x-www-form-urlencoded)。
操作
范围
空间
0

工作原理

URL 编码(百分号编码)将无法在地址中直接出现的字符替换为带有其字节值的 %XX 序列。例如,空格变成 %20。

“组件”范围还会转义保留字符(= & / ? #):用于参数的值。“完整 URL”会保留地址结构:用于整个 URL。

在 HTML 表单中,空格被编码为 +(application/x-www-form-urlencoded);在其他情况下,按照 RFC 3986 标准使用 %20。

示例

hola mundo & máshola%20mundo%20%26%20m%C3%A1s“&”会被转义(%26),以免与参数分隔符混淆;“á”按 UTF-8 编码(%C3%A1)。
a=1&b=2a%3D1%26b%3D2
https://sitio.com/á b?x=1 2URL completa: https://sitio.com/%C3%A1%20b?x=1%202在“完整 URL”模式下,://、/ 和 ? 会被保留;只有会破坏地址的字符才会被转义。

使用场景

  • 手动构建 URL 时安全地拼装查询参数。
  • 在通过 GET 请求发送之前,对包含 &、=、空格或重音符号的值进行编码。
  • 解码 URL 以读取每个参数携带的值。
  • 为表单提交准备 application/x-www-form-urlencoded 主体。

常见问题

“组件”和“完整 URL”有什么区别?

“组件”(encodeURIComponent)还会转义 =、&、/、?、# —— 用于单个值。“完整 URL”(encodeURI)会保留这些结构字符 —— 用于整个 URL。

空格何时用 +,何时用 %20?

+ 只适用于表单主体(application/x-www-form-urlencoded)。在 URL 的其余部分,空格的标准是 %20。

为什么“á”变成 %C3%A1 而不是单个 %XX?

因为它按 UTF-8 编码:非 ASCII 字符占用多个字节,每个字节用各自的 %XX 序列表示。

对 URL 进行编码会使其安全吗?

不会。它只是在语法层面使其有效。这不是加密,也不会以任何方式保护内容。