URL 编码/解码
对 URL 进行编码和解码。
URL 无效
URL 编码・解码是什么
URL 编码(百分号编码)是指将无法纳入 URL 的中文或符号,转换为「%XX」形式 ASCII 字符串的机制。URL 原本即以仅含 ASCII 字符为前提所设计,因此在将中文这类多位元组字符,或「?」「&」等保留字符作为参数值传递时,此转换即为必要。
本工具可将所输入的 URL 或字符串一键编码・解码,转换结果亦可直接复制使用。可运用于 API 请求的组建、转址 URL 的产生、确认自其他系统接收之已编码 URL 的内容等开发作业的各种场合。
使用方式
- 输入欲转换的字符串 将含中文的文字,或已编码的 URL 贴入输入栏。
- 选择编码或解码 欲将一般字符串转为%表记则选编码,欲将%表记还原则选解码。
- 确认转换结果 转换后的字符串会即时显示。
- 复制结果加以利用 可直接贴入 API 请求的查询参数或转址 URL 中使用。
用好本工具的小技巧
- 日语字符「あ」经 UTF-8 编码后变为
%E3%81%82。 - 空格在 URL 路径中编码为
%20,在查询参数中有时编码为+(RFC 3986 与 HTML 表单规范的差异)。 - 将
?、&、=等保留字符用于参数值时,必须进行编码。 - 在 REST API 查询参数中包含非 ASCII 字符,或安全传递重定向 URL 时非常实用。
活用场景
建立 REST API 的查询参数
想将中文关键字或自由输入值安全纳入 API 查询字符串时使用。
组建转址 URL
将表示目的地的 URL 作为参数嵌入另一 URL 时,可藉编码防止与分隔字符冲突。
确认自其他系统接收之 URL 的内容
可将日志或外部服务传来、满是%表记的 URL 解码,读取实际的参数值。
建立邮件内文・社群分享用连结
可将中文文字安全纳入含主旨与内文的 mailto 连结,或社群分享用 URL。
用语集
- 百分号编码
- 指将字符转换为 UTF-8 位元组序列,再以「%」+16进位2位数表示各位元组的方式。可安全表现 URL 中无法使用的字符。
- 保留字符
- 指「?」「&」「=」「#」「+」等用于区隔 URL 结构的符号。纳入参数值时须予以编码。
- 非保留字符
- 指英数字与「-」「_」「.」「~」四个符号。RFC 3986 明定其无须编码。
- RFC 3986
- 指订定 URI 语法的网际网络标准规格。百分号编码的规则亦于此处定义。
- application/x-www-form-urlencoded
- 指 HTML 表单送出时所用的编码格式。与 URI 标准不同之处在于将空白转换为+而非%20。
常见问题
%XX 十六进制格式的过程,解码则是将其还原为原始文本。浏览器地址栏会自动对 URL 进行解码显示。%20(RFC 3986 标准);在 HTML 表单的 application/x-www-form-urlencoded 查询字符串中使用 +。如无特殊要求,推荐统一使用 %20。- _ . ~ 等非保留字符无需编码。&、=、?、# 等保留字符在作为参数值使用时必须进行编码。
闲话 ― 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 格式,应根据使用场景加以区分。