URL 编码 / 解码

输入 (Input)
结果 (Result)

01 基本定义

URL 编码(也称为百分号编码 Percent-encoding)是一种编码机制。它的作用是将统一资源标识符 (URI) 中不安全的字符、保留字符或非ASCII字符转换为一种被互联网普遍接受的格式。

为什么要编码?

URL只允许使用一小部分字符(主要是字母、数字和少数符号 -_.~)。

任何其他字符(如汉字、空格、&、?、=)如果直接放在URL中,可能会导致服务器解析错误或数据丢失。

02 编码原理 (How it Works)

编码时,非安全字符会被替换为一个百分号 % 后跟两个十六进制数字。这两个数字代表了该字符在特定字符集(通常是 UTF-8)下的字节值。

原始字符 (space)
UTF-8 Hex E7 A9 BA E6 A0 BC 20
URL Encoded %E7%A9%BA %E6%A0%BC %20

03 常见应用场景

  • URL 查询参数 例如搜索关键词包含空格或特殊符号时:q=hello world 必须变为 q=hello%20world
  • 回调地址 (Redirect URL) 当一个 URL 被作为参数传递给另一个 URL 时,必须对其进行编码,防止分隔符(如 &、?、=)混淆。
  • 处理中文文件名 在下载链接中包含中文文件名时,通常需要编码以确保各浏览器兼容。

常见问题

空格是被编码成 %20 还是 + ?
在标准的 URI 编码中,空格应被转义为 %20。但在旧的表单提交(application/x-www-form-urlencoded)中,空格有时会被替换为 +。本工具使用标准的 %20
encodeURI 和 encodeURIComponent 有什么区别?
encodeURI 是用来编码整个 URL 的,它不会编码那些 URL 语法中具有特殊含义的字符(如 : / ? # & =)。
encodeURIComponent 则是用来编码 URL 参数的,它会编码几乎所有非字母数字字符(包括 / ? &),确保参数内容不会破坏 URL 结构。
本工具默认使用更彻底的 encodeURIComponent。
URL 编码支持中文吗?
是的。URL 编码的一个主要用途就是为了能安全地在网址中传递中文。中文汉字会被转换为 UTF-8 字节序列,然后每个字节被转义为 %XX 格式。
URL 有最大长度限制吗?
HTTP 协议本身没有限制,但浏览器和服务器有限制。IE 限制约 2083 字符,现代浏览器(Chrome/Firefox)支持更长(甚至 65536+),但通常建议为了兼容性,URL 长度保持在 2000 字符以内。
为什么有时候看不到 % 符号?
现代浏览器(如 Chrome)的地址栏为了用户体验,会自动解码显示的 URL 中的百分号编码(特别是中文)。但当你复制该地址时,得到的仍然是编码后的字符串。
所有特殊符号都需要编码吗?
不是。字母(a-z, A-Z)、数字(0-9)以及连字符(-)、下划线(_)、句点(.)和波浪线(~)是不保留字符,不需要编码。其他字符通常建议编码。
数据会上传到服务器吗?
不会。本工具完全在您的浏览器端运行(Client-side),所有的编码和解码通过 JavaScript 实时完成,保障您的数据隐私。
我应该编码几次?
通常只需编码一次。如果不小心重复编码(例如 % 变成了 %25),解码时也需要重复解码才能还原。建议避免重复编码。

更多免费实用工具