什么是 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 结构,使其无法解析。大多数编程语言提供专门的函数来正确处理这种情况。

相关工具

相关术语

相关文章

URL编码解码详解【2026】- 百分号编码原理与最佳实践

深入学习现代 Web 网络传输中 URL 编码(Percent-encoding)与解码的底层运行原理与实战开发技巧。全面掌握哪些 URL 特殊字符(保留字符与非保留字符)必须处理、如何彻底保障前后端 REST API 传参的数据完整性不被截断、以及 JavaScript 中 encodeURIComponent 函数的正确使用场景与业界最佳实践。附带 Python、Java 跨语言实战代码示例!

2024-01-20

URL编码详解【2026】- 特殊字符处理与数据完整性指南

全面解析Web开发中URL编码(URL Encoding)与解码的底层原理及RFC 3986标准规范。深入了解哪些URL特殊字符(如空格、中文)需要转义,掌握JavaScript、Python、Java等主流编程语言中的URL编码实现函数与应用场景,有效避免前端路由与后端API接口传参时出现的乱码错误。

2024-07-27

JSON在线对比指南:高效比较JSON文件的完整教程【2026】

全面系统地学习如何高效、准确地在线对比深层复杂嵌套的 JSON 数据文件。深入硬核掌握 JSON diff 差异比较的底层技术原理与算法(如 LCS、基于键匹配),学会使用业界最佳的在线 JSON 差异比较与可视化工具进行 Git 版本控制冲突解决和后端 REST API 联调调试。本高级指南详细解析了多种常见的差异对比应用场景、智能高亮冲突差异点,并为您提供实用的 Python 与 JavaScript 多语言代码实战示例以实现自动化的数据结构比对。

2026-02-07