URL 编码/解码
对 URL 进行编码和解码。
URL 无效
Tips
- 日语字符「あ」经 UTF-8 编码后变为
%E3%81%82。 - 空格在 URL 路径中编码为
%20,在查询参数中有时编码为+(RFC 3986 与 HTML 表单规范的差异)。 - 将
?、&、=等保留字符用于参数值时,必须进行编码。 - 在 REST API 查询参数中包含非 ASCII 字符,或安全传递重定向 URL 时非常实用。
常见问题
编码是将汉字、空格等非 ASCII 字符转换为
%XX 十六进制格式的过程,解码则是将其还原为原始文本。浏览器地址栏会自动对 URL 进行解码显示。在 URL 路径部分使用
%20(RFC 3986 标准);在 HTML 表单的 application/x-www-form-urlencoded 查询字符串中使用 +。如无特殊要求,推荐统一使用 %20。字母(A–Z、a–z)、数字(0–9)以及
- _ . ~ 等非保留字符无需编码。&、=、?、# 等保留字符在作为参数值使用时必须进行编码。
闲话 ― URL 的诞生:Tim Berners-Lee 与万维网的黎明
URL 由 Tim Berners-Lee(万维网的发明者)于 1991 年设计。由于最初仅针对 ASCII 字符,多字节字符(如日语)及特殊字符需通过百分号编码来表示。
互联网第一个网页的 URL「http://info.cern.ch/hypertext/WWW/TheProject.html」至今仍可访问。表情符号域名(如 🍕.ws)在技术上可行,内部会被转换为 Punycode(以 xn-- 开头的格式)。URL 在理论上可超过 2,000 个字符,但实际上受浏览器和服务器的限制(约 2,048 个字符)。
RFC 3986 定义了 URL 规范,但 "%20(空格)"与"+(空格)"的区别至今仍是常见混淆点。%20 是 URI 标准,+ 用于 HTML 表单的 application/x-www-form-urlencoded 格式,应根据使用场景加以区分。