URI 组件编码器

如果你曾未编码就把类似 name=John & Jane 的值放进 URL,就会明白其中的麻烦:& 被当作新参数,服务器只看到乱码。本工具按 RFC 3986 对任意字符串进行百分号编码,使其可安全用作 URI 组件,并把每个保留字符转成 %HH 对(含空格)。粘贴片段、查询值或重定向目标,即可得到可安全拼接进任意 URL 的结果。

如何编码 URI 组件

  1. 1

    粘贴你的值

    输入单个查询参数值、路径段或片段字符串。

  2. 2

    选择编码或解码

    切换方向,把百分号转义还原为原始字符。

  3. 3

    运行

    工具先把每个字符编码为 UTF-8,再把每个保留字节替换为 %HH。

  4. 4

    复制结果

    把输出直接放进你的 URL 模板或 API 客户端。

哪些字符会被转义

本编码器遵循 RFC 3986:只有未保留集合 A-Z a-z 0-9 - _ . ~ 保持不变。其余一切都会变成百分号编码的 UTF-8,包括空格,以及 JavaScript 的 encodeURIComponent 会保留的子分隔符 ! * ' ( )。

字符 编码为
空格 %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

组件与完整 URI

本工具比 encodeURI 更严格。encodeURI 会保留 : / ? # [ ] @ ! $ & ' ( ) * + , ; =,因为这些字符在 URL 中是结构性的。对于要拼接进查询字符串的值,你需要严格形式,而这正是本工具的输出:它连 ! ' ( ) * 也会转义,比 JavaScript 的 encodeURIComponent 更进一步。

const url = `/search?q=${encodeURIComponent(userInput)}`;

常见陷阱

  • 双重编码: 对已编码的内容再次编码会得到 %2520 而不是 %20。若不确定来源,请务必先解码。
  • 表单中的加号: HTML 表单提交把空格编码为 +,而不是 %20。严格遵循 RFC 3986 的解码器(包括本工具)不会把 + 还原为空格。这种情况请使用能识别表单的解码器。
  • 路径分隔符: 在这里编码 / 会变成 %2F。如果你想保留真正的路径结构,请先拼接各段,再分别编码。

常见问题

这是 RFC 3986 的百分号编码,严格形式。它会转义 :、/、?、# 以及其余保留字符(还有 !、'、(、)、*),因为组件内部不应携带 URL 结构。这使它比 JavaScript 的 encodeURIComponent 更严格,也远比 encodeURI 更严格。

%20 是 RFC 3986 的方式。用 + 表示空格是 application/x-www-form-urlencoded 体编码的遗留。对 URL 中的查询字符串,%20 始终安全;+ 只在由表单 POST 生成时才在服务器端被预期。

每个字符先编码为 UTF-8,然后每个字节都被转义。像 日 这样的字符会变成 %E6%97%A5(三个字节)。

不会。该值在服务器端进行百分号编码以生成你的结果,不会存储或记录;响应发出后,你粘贴的内容不会被保留。

相关工具

此工具还提供其他语言版本