URL编码解码 — 在线百分号编码转换
支持中文和 emoji 的 URL 百分号编码解码工具
在浏览器中处理 · 不上传任何内容
功能简介
URL 中只有字母、数字和少数几个符号可以原样出现。中文、空格、emoji 等其他字符都要先转换成 UTF-8 字节,再把每个字节写成 % 加两位十六进制数字,这就是百分号编码。本工具会在你输入的同时显示编码或解码结果。
使用方法
- 选择编码或解码。
- 选择范围:单个查询参数值用 encodeURIComponent,完整 URL 用 encodeURI。
- 把文本或 URL 粘贴到输入框,结果会立即出现。
- 解码表单数据时,勾选把 + 当作空格的选项。
- 复制结果,或点击“将输出用作输入”检查能否来回转换。
处理方式
- 由浏览器自带的
encodeURIComponent、encodeURI、decodeURIComponent和decodeURI完成转换,遵循 RFC 3986 的规则。 - 文本先转换为 UTF-8 字节。一个汉字或韩文字符占 3 个字节,所以会看到三组
%XX;一个 emoji 占 4 个字节,所以是四组。 - 不转义的字符是
A-Z a-z 0-9 - _ . ! ~ * ' ( )。encodeURI 还会保留; , / ? : @ & = + $ #。 - 未配对的代理字符无法编码,会作为错误报告。
- 解码失败时绝不会悄悄修复,而是显示错误信息。
示例
| 输入 | 模式 | 结果 |
|---|---|---|
a b&c=d |
单个值 | a%20b%26c%3Dd |
中文 |
单个值 | %E4%B8%AD%E6%96%87 |
👍 |
单个值 | %F0%9F%91%8D |
https://example.com/搜索?q=a b |
完整 URL | https://example.com/%E6%90%9C%E7%B4%A2?q=a%20b |
常见问题
encodeURIComponent 和 encodeURI 有什么区别?
encodeURIComponent 用于查询参数值这类单个片段,所以会连分隔符 / ? & = 和 # 一起转义。encodeURI 用于完整的 URL,会保留这些分隔符。
为什么会出现解码错误?
每个 % 后面必须跟两位十六进制数字,而且得到的字节必须组成有效的 UTF-8。请检查字符串是否在中间被截断,或文本里是否有未转义的 % 本身。
空格应该是 %20 还是 +?
在 URL 路径中是 %20。+ 只在 HTML 表单编码(application/x-www-form-urlencoded)中表示空格。解码这类数据时,请打开把 + 当作空格的选项。
我的 URL 会被发送到服务器吗?
不会。所有处理都在你的浏览器中完成。