什么是URL 编码/解码器?
URL 编码/解码器可将 URL 中的特殊字符转换为百分号编码形式,也可以反向解码。在处理查询字符串、API 参数或包含空格和特殊字符的 URL 时很实用。
工具提供四种编码模式。Component 模式(encodeURIComponent)会转义包括斜杠和 & 在内的所有保留字符,适合查询参数值。Full URL 模式(encodeURI)保留结构字符,让整条地址仍可解析。表单数据模式会把空格编码为 +,用于 application/x-www-form-urlencoded 提交。RFC 3986 严格模式更进一步,还会转义 encodeURIComponent 跳过的 !'()* 子分隔符,因此输出可放进任何符合规范的 URL。Auto-detect 会扫描输入是否含 %XX 序列并自动判断该编还是该解;开启“实时”后输入时即时转换;开启“递归解码”可将二次或三次编码逐层还原;对比面板则同时展示同一输入在四种模式下的结果。
使用方法
- 将 URL 或文本字符串粘贴到输入框中。
- 点击编码将特殊字符转换为百分号编码形式,或点击解码进行反向转换。
- 将结果复制到剪贴板,或使用交换按钮切换输入/输出内容。
何时使用
- 手动拼接查询字符串时,转义空格、& 和 = 等符号。
- 读到一行带 % 编码的服务器日志,把它还原成可读文字。
- 把含非 ASCII 字符的外语网址,粘进纯文本邮件而不会乱码。
结果
一位开发者将 hello world 编码为 hello%20world,并将 & 编码为 %26,用作查询字符串参数。
常见问题
- encodeURI 和 encodeURIComponent 有什么区别?
- encodeURI 不动 /、?、& 和 = 这些结构符号,整条 URL 仍能工作。encodeURIComponent 会把它们全部转义,适合用在查询字符串里 ? 后面的单个参数值。
- 为什么我解码后的字符串里还有 %20?
- 要么源串被双重编码(再解一次才会回到原文),要么源串属于表单格式,用 + 代表空格。可以再解一次,或在解码前把 + 替换成空格。
- URL 里有哪些字符可以直接出现,不用编码?
- 未保留字符:A–Z、a–z、0–9,以及四个符号:连字符、下划线、句点、波浪号。除此之外,包括空格、非 ASCII 字母,以及在当前位置没有句法意义的保留字符,都必须做百分号编码。
- 把同一字符串编码两次会出问题吗?
- 会。重复编码会把每个 % 变成 %25,需要解码两次才能复原。如果你正在追加来自其他系统、可能已经编码过的数据,请先解一次,或加一个标志位记录其状态。
- 工具支持中文、阿拉伯文这种 Unicode 字符吗?
- 支持。浏览器内置的 encodeURIComponent 会把任意字符先转成 UTF-8 字节序列,再对每个字节做百分号编码。解码逆向进行,因此「café」可往返为「caf%C3%A9」,中文亦然。