URL 编码

编码和解码 URL 组件

输入
输出

什么是 URL / 百分比编码?

URL 只能包含一小部分 ASCII 字符。其他任何字符——空格、重音字母、表情符号、保留字符如 `&`、`=`、`?`——必须以百分比编码形式表示为 `%` 后跟两个表示 UTF-8 字节的十六进制数字。空格变为 `%20`,`é` 变为 `%C3%A9`,问号变为 `%3F`。

在转义单个部分(查询参数值、路径段)时使用 '组件' 编码——相当于 JavaScript 的 `encodeURIComponent`。在转义整个 URL 时使用 '完整 URL' 编码,该 URL 已经有你想保留的结构分隔符——相当于 `encodeURI`。

使用场景

  • 构造 query string——用户输入塞进 `?q=` 前先做 percent-encode。
  • 排查服务器日志——把 `/Users/%E4%B8%AD%E6%96%87/...` 解码读原始路径。
  • 调试 OAuth 回调——粘贴 `redirect_uri` 看 OAuth 回调到底解出了什么。
  • 读 curl 示例——从教程复制的 percent-encoded URL 解码后才能看懂请求。

示例

输入结果
hello world & friendshello%20world%20%26%20friends
café/menu?id=123caf%C3%A9%2Fmenu%3Fid%3D123 (component) or caf%C3%A9/menu?id=123 (full URL)

常见问题

encodeURI 和 encodeURIComponent 有什么区别?

`encodeURI` 保留 URL 结构字符(`:`、`/`、`?`、`#`、`&`、`=`)不变——用于编码整个 URL。`encodeURIComponent` 也会转义这些字符——用于编码进入 URL 的单个部分。

它能处理非 ASCII 字符吗?

可以。ASCII 以外的字符会被编码为其 UTF-8 字节(1–4 字节),每个字节表示为 `%XX`。

解码时 `+` 被解释为空格吗?

不。此工具使用标准 URL 解码,保持 `+` 不变。`+` 表示空格的规则特定于 `application/x-www-form-urlencoded` 表单数据,而此工具没有单独的表单解码模式。

为什么我的 URL 在编码后会损坏?

您编码了需要保持字面值的结构字符(`:`、`/`、`?`、`#`)。此工具始终执行组件编码(`encodeURIComponent`),会对它们进行转义——因此仅编码单个查询值或路径段,而不是整个 URL。

有任何内容被上传吗?

没有——编码和解码完全在你的浏览器中运行。