URL 编解码

在线 URL 编码/解码工具,实时转换

方向
输入
0 字符
结果
0 字符

什么是 URL 编码?

URL 编码(URL Encoding),又称百分号编码(Percent-Encoding),是一种将 URL 中的特殊字符、非 ASCII 字符和保留字符转换为 %XX 格式的编码机制,其中 XX 是字符在 UTF-8 编码下的十六进制字节值。URL 编码是 HTTP 协议的核心组成部分,确保 URL 在各种网络环境中安全、可靠地传输。

根据 RFC 3986 规范,URL 只允许包含一组有限的安全字符:英文字母(A-Z、a-z)、数字(0-9)以及少数特殊字符(-_.~)。任何超出这个范围的字符——包括中文、日文等非 ASCII 字符,以及空格、#&? 等有特殊含义的字符——都必须经过编码处理。

为什么需要 URL 编码?

  • 传输安全性:确保 URL 中的特殊字符不会破坏 HTTP 协议的语义结构。
  • 跨平台兼容:不同操作系统、浏览器对非 ASCII 字符的处理方式各异,编码后统一为标准格式。
  • 数据完整性:防止空格、引号等字符在传输过程中被截断或错误解析。
  • 安全性防护:正确的编码可以防止部分注入攻击(如 CRLF 注入)。

URL 编码规则详解

保留字符

以下字符在 URL 中具有特殊含义,当它们不作为分隔符使用时需要进行编码:

字符编码后URL 中的含义
空格%20(或 +)分隔单词
!%21-
"%22-
#%23片段标识符(锚点)
$%24-
%%25编码前缀符
&%26参数分隔符
'%27-
(%28-
)%29-
*%2A-
+%2B空格(Query String 中)
,%2C-
/%2F路径分隔符
:%3A协议/端口分隔符
;%3B-
=%3D键值对分隔符
?%3F查询字符串起始符
@%40用户信息分隔符
[%5BIPv6 地址
]%5DIPv6 地址

非 ASCII 字符

中文、日文、韩文、emoji 等非 ASCII 字符,在 URL 编码时会先转换为 UTF-8 字节序列,再对每个字节进行百分号编码。例如:

  • "你好" → %E4%BD%A0%E5%A5%BD
  • "こんにちは" → %E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF
  • "😀" → %F0%9F%98%80

encodeURI vs encodeURIComponent

JavaScript 提供了两个 URL 编码函数,它们的行为有重要区别:

特性encodeURI()encodeURIComponent()
用途编码完整 URL编码 URL 参数值
不编码的字符A-Z a-z 0-9 - _ . ! ~ * ' ( ) ; / ? : @ & = + $ , #A-Z a-z 0-9 - _ . ! ~ * ' ( )
典型场景对含有中文的完整 URL 编码对 Query String 的值部分编码
示例encodeURI("https://example.com/你好") → https://example.com/%E4%BD%A0%E5%A5%BDencodeURIComponent("name=张三&age=25") → name%3D%E5%BC%A0%E4%B8%89%26age%3D25

选择建议:如果你要编码整个 URL,使用 encodeURI();如果你要编码 URL 中的某个参数值、路径片段或查询字符串,使用 encodeURIComponent()。大多数情况下,使用 encodeURIComponent() 更安全,因为它会对更多字符进行编码。

常见应用场景

  • GET 请求参数:在 URL 中传递中文或特殊字符时(如 ?q=%E6%90%9C%E7%B4%A2)。
  • 表单数据提交:使用 application/x-www-form-urlencoded 格式提交表单时,浏览器会自动进行 URL 编码。
  • 前端路由:SPA 应用中的动态路由参数(如 /user/%E5%BC%A0%E4%B8%89)。
  • API 调用:RESTful API 中路径参数或查询参数包含特殊字符时。
  • URL 解析与构造:通过 JavaScript 的 URLURLSearchParams API 解析和构造带参数的 URL。

URL 解码(URL Decoding)

URL 解码是 URL 编码的逆过程,将 %XX 格式的编码字符还原为原始字符。JavaScript 中对应 decodeURI()decodeURIComponent() 两个函数。

在实际开发中,我们经常需要调试经过编码的 URL——将乱码般的 %E4%BD%A0%E5%A5%BD 还原为可读的中文"你好"。这正是 URL 解码工具的核心价值:快速查看参数的真实含义、排查编码问题、验证 API 请求正确性。

URL 结构解析

一个完整的 URL 由以下部分组成:

scheme://username:password@host:port/path?query=value#hash

本工具不仅提供编码/解码功能,还内置了 URL 解析器:当你输入一个完整 URL 时,会自动拆解出协议、用户名、密码、主机、端口、路径、查询参数和哈希等各个组成部分,并以表格形式清晰展示,方便开发者逐项审查 URL 结构。

为什么选择我们的 URL 编解码工具?

  • 实时转换:输入即转换,无需点击按钮,延迟极低。
  • 双向切换:一键在编码和解码之间切换,直观对比原始内容与编码结果。
  • URL 解析:集成 URL 结构解析功能,自动拆解协议、主机、端口、路径、参数等。
  • 一键复制:每个部分都配有独立的复制按钮,方便快速取用。
  • 完全免费:无需注册、无需安装、无广告、无限制使用。
  • 隐私安全:所有处理均在浏览器本地完成,数据不离开你的设备。