URL 编码/解码

URL 编码(encodeURIComponent)与解码工具

输入

URL编解码工具 - 网址编码解码在线转换器

URL编解码工具可以对 URL 进行编码(encodeURIComponent)和解码(decodeURIComponent)操作。URL 编码将特殊字符转换为百分号格式(如中文转为 %E4%B8%AD),确保 URL 在网络传输中不会出现乱码或解析错误。支持批量处理和实时预览。

下面介绍 URL 编码的原理、使用方法和常见应用场景。

什么是 URL 编码

URL 编码(Percent-Encoding)是 RFC 3986 定义的一种编码机制,将 URL 中的非 ASCII 字符和保留字符转换为 %XX 格式。URL 只允许包含英文字母、数字和少量特殊字符(- _ . ~),其他字符必须经过编码才能安全传输。

例如,中文字符"你好"编码后变为 %E4%BD%A0%E5%A5%BD,空格编码后变为 %20(或 +),问号编码后变为 %3F。编码后的 URL 可以被所有浏览器和服务器正确解析,不会出现乱码或截断问题。

核心功能

URL 编码

将特殊字符编码为百分号格式

URL 解码

将编码后的 URL 还原为原始文本

实时预览

输入内容实时显示编码/解码结果

批量处理

支持多行文本批量编解码

多种编码

encodeURI 和 encodeURIComponent 两种模式

一键复制

结果一键复制到剪贴板

使用教程

  1. 在输入框中输入需要编码或解码的 URL 文本。
  2. 选择操作类型:编码(将中文和特殊字符转为百分号格式)或解码(将百分号格式还原)。
  3. 选择编码模式:encodeURI(保留 URL 结构)或 encodeURIComponent(编码所有特殊字符)。
  4. 查看结果并一键复制。

适用场景

  • 中文 URL - 将包含中文的 URL 编码为安全格式
  • 参数传递 - 编码 URL 查询参数中的特殊字符
  • 乱码修复 - 解码错误编码的 URL 还原正确内容
  • 开发调试 - 验证 URL 编码解码是否正确

encodeURI 与 encodeURIComponent 的区别

encodeURI 用于编码完整的 URL,不会编码 URL 结构字符(: / ? # & = 等),保持 URL 的可用性。适用于对整个 URL 进行编码。

encodeURIComponent 用于编码 URL 的参数值部分,会编码所有特殊字符(包括 : / ? # & =),确保参数值不会破坏 URL 结构。适用于编码查询参数中的值。例如,将中文参数编码后拼接到 URL 的查询字符串中。

常见问题

URL 编码和 Base64 编码有什么区别?

URL 编码将特殊字符转为 %XX 格式,用于 URL 安全传输;Base64 将二进制数据转为 ASCII 字符串,用于二进制数据的文本表示。两者用途不同,不能互相替代。

空格编码后是 %20 还是 +?

encodeURI 和 encodeURIComponent 将空格编码为 %20。在 application/x-www-form-urlencoded 格式(如表单提交)中,空格编码为 +。两者都是合法的,但语义不同。

双重编码怎么处理?

如果 URL 被编码了两次,需要解码两次才能还原。例如 %25E4%25BD%A0 需要先解码为 %E4%BD%A0,再解码为"你"。多次解码直到结果不再变化即可。

编码后的 URL 更长吗?

是的,每个非 ASCII 字符编码后会变为 3 个字符(% 加两位十六进制)。一个中文字符(UTF-8 编码 3 字节)编码后变为 9 个字符。

URL 有长度限制吗?

HTTP 规范没有限制 URL 长度,但浏览器和服务器有限制。IE 限制 2083 字符,Chrome 约 2MB,Apache 默认 8190 字符,Nginx 默认 4096-8192 字符。建议 URL 不超过 2000 字符。

为什么有时候 URL 中文不需要编码?

现代浏览器会在地址栏中自动将编码后的 URL 显示为中文,看起来像没有编码。但实际传输时仍然是编码后的格式。复制地址栏的 URL 粘贴到文本编辑器中可以看到编码后的形式。