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 & friends | hello%20world%20%26%20friends |
| café/menu?id=123 | caf%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。
有任何内容被上传吗?
没有——编码和解码完全在你的浏览器中运行。
