什么是 URL 编码?

URL 编码(百分号编码)是一种在统一资源标识符(URI)中编码信息的机制,通过将不安全的 ASCII 字符替换为 '%' 后跟两个表示字符字节值的十六进制数字来实现。

快速了解

全称百分号编码 / URL 编码
创建时间1994 年(RFC 1738,2005 年在 RFC 3986 中更新)
规范文档官方规范

工作原理

URL 编码确保 URL 只包含有效的 ASCII 字符。在 URL 中具有特殊含义的字符(如 &、=、?、/)或不允许的字符(如空格、非 ASCII 字符)必须进行编码。例如,空格变为 %20,与号变为 %26。这种编码对于在查询字符串、表单提交和 API 请求中传递数据至关重要。现代 Web 应用程序通常会自动处理 URL 编码,但理解它对于调试和 API 开发非常重要。

主要特点

  • 将不安全字符替换为 %XX 十六进制格式
  • 空格可以编码为 %20 或 +(在表单数据中)
  • 保留字母数字字符(A-Z、a-z、0-9)
  • 安全字符包括 - _ . ~
  • UTF-8 字符被编码为多个 %XX 序列
  • 十六进制数字不区分大小写(%2f 等于 %2F)

常见用途

  1. URL 中的查询字符串参数
  2. 表单数据提交(application/x-www-form-urlencoded)
  3. API 请求参数
  4. 文件路径中特殊字符的编码
  5. 创建安全的可分享 URL

示例

loading...
Loading code...

常见问题

为什么需要 URL 编码?

URL 只能包含有限的 ASCII 字符集。空格、与号、中文等特殊字符和非 ASCII 字符必须编码,以确保在不同系统之间正确传输和解析。如果不编码,这些字符可能导致 URL 解析错误或安全问题。

空格编码为 %20 和 + 有什么区别?

两者都表示空格,但 %20 是标准的百分号编码,而 + 专门用于 application/x-www-form-urlencoded 内容(HTML 表单提交)。在查询字符串中经常使用 +,但 %20 具有更广泛的兼容性。建议在 URL 路径中使用 %20。

哪些字符不需要 URL 编码?

不需要编码的非保留字符包括:大小写字母(A-Z、a-z)、数字(0-9)以及四个特殊字符:连字符(-)、下划线(_)、句点(.)和波浪号(~)。这些字符可以直接出现在 URL 中。

中文字符在 URL 中如何编码?

中文字符首先转换为 UTF-8 字节序列,然后每个字节进行百分号编码。例如,「中」字的 UTF-8 编码是 E4 B8 AD,所以编码结果是 %E4%B8%AD。一个中文字符通常会变成 3 个 %XX 序列。

应该对整个 URL 编码还是只编码某些部分?

只应该编码查询参数的值和路径段中的特殊字符,而不是结构字符如 :、/、?、& 和 =。编码这些分隔符会破坏 URL 结构,使其无法解析。大多数编程语言提供专门的函数来正确处理这种情况。

相关工具

相关术语

相关文章