博客
简体中文

URL编码解码 — 在线百分号编码转换

支持中文和 emoji 的 URL 百分号编码解码工具

在浏览器中处理 · 不上传任何内容

功能简介

URL 中只有字母、数字和少数几个符号可以原样出现。中文、空格、emoji 等其他字符都要先转换成 UTF-8 字节,再把每个字节写成 % 加两位十六进制数字,这就是百分号编码。本工具会在你输入的同时显示编码或解码结果。

使用方法

  1. 选择编码或解码。
  2. 选择范围:单个查询参数值用 encodeURIComponent,完整 URL 用 encodeURI。
  3. 把文本或 URL 粘贴到输入框,结果会立即出现。
  4. 解码表单数据时,勾选把 + 当作空格的选项。
  5. 复制结果,或点击“将输出用作输入”检查能否来回转换。

处理方式

  • 由浏览器自带的 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 会被发送到服务器吗?

不会。所有处理都在你的浏览器中完成。

没找到想要的工具?