URL 编码 / 解码

以组件、URI 或表单模式对 URL 和查询字符串进行百分号编码与解码,支持 UTF-8、UTF-16 和 Latin-1 字符集,在浏览器本地运行。

输入内容和文件始终留在浏览器中

粘贴 URL、查询字符串或普通文本,进行百分号编码或解码。

编码或解码结果将显示在这里。

本页内容

将文本进行百分号编码以用于 URL,并把 %XX 序列解码回可读文本。三种模式分别对应 JavaScript 的 encodeURIComponent、encodeURI 和 HTML 表单编码,处理由 Rust 编译的 WebAssembly 模块在浏览器中完成。

详细功能

组件 模式会转义除字母、数字和 - _ . ! ~ * ' ( ) 之外的所有字符,因此 /、?、&、= 也会被编码,适用于单个查询参数值或单个路径段。URI 模式保留完整地址的结构(: / ? # & = + $ , ; @),只转义空格和在 URL 中永远无效的字符。表单 模式遵循 application/x-www-form-urlencoded:空格变为 +,除字母、数字和 - _ . * 外全部转义;解码时也会把 + 还原为空格。

编码前,文本会按所选字符集转换为字节。UTF-8 是 Web 标准;ISO-8859-1(Latin-1)、UTF-16LE 和 UTF-16BE 用于旧系统,字符集无法表示的字符会连同位置一起报错。解码是严格的:每个 % 后必须跟两个十六进制数字,因此孤立的 100% 会报错,而不会被悄悄放过。状态行会显示输出的字符数和字节数。

实用示例

查询参数值:a b&c=d/e? 在组件模式下变为 a%20b%26c%3Dd%2Fe%3F。

完整 URL:https://example.com/my path?q=a b&x=1 在 URI 模式下变为 https://example.com/my%20path?q=a%20b&x=1,而组件模式会把它变成 https%3A%2F%2Fexample.com%2Fmy%20path%3Fq%3Da%20b%26x%3D1。

表单数据:John Doe & Co. 在表单模式下变为 John+Doe+%26+Co.;解码 a+b%20c 时,表单模式得到 a b c,组件模式得到 a+b c。

字符集:café 在 UTF-8 中是 caf%C3%A9,在 ISO-8859-1 中是 caf%E9。

如何使用此工具

  1. 粘贴文本或已编码的字符串

    在 输入 中填入要编码的普通文本,或要解码的百分号编码字符串。

  2. 选择模式和字符集

    在 模式 中,单个值选择 组件(类似 encodeURIComponent),完整地址选择 URI(类似 encodeURI),表单正文选择 表单(application/x-www-form-urlencoded)。除非服务器要求其他编码,否则 文本字符集 保持 UTF-8。

  3. 编码或解码

    点击 编码 进行百分号编码,或点击 解码 还原文本。无效的 % 序列和字符集之外的字符会显示为错误。

  4. 复制结果

    复制 将输出放入剪贴板。交换 会把输出移回输入框,例如用来再解码一层。

提示和最佳实践

  • 在组件模式下分别编码每个查询值,再用 & 和 = 拼接。如果用组件模式编码整个 URL,:// 也会被转义,链接就失效了。
  • URI 模式不会转义 &、= 和 #:如果参数值中含有这些字符,请用组件模式单独编码该值。
  • + 只在表单数据中表示空格;在表单模式之外会被解码为普通加号。
  • 被编码两次的文本(如 %2520)第一次解码会得到 %20:点击 交换 后再次 解码 即可去掉下一层。
  • 使用服务器期望的字符集:在 ISO-8859-1 下 %E9 解码为 é,而在 UTF-8 下单独的 %E9 会被报告为无效文本。