URL 编码 / 解码
对 URL 组件与查询字符串进行百分号编码或解码
本地运行
loading…
关于此工具
空格、& 符号和非 ASCII 字母等字符不能直接出现在 URL 里,所以要百分号编码:空格变成 %20,「你」变成 %E4%BD%A0。这个工具把文本编码为可安全放入 URL 的形式,也把百分号转义的字符串解码回可读文本,包括查询字符串中用 + 表示空格的约定。
提供两种编码模式,因为 JavaScript 本身就有两种:组件模式(encodeURIComponent)转义一切可能作为 URL 分隔符的字符,适合编码单个查询字符串值;完整 URI 模式(encodeURI)保留 /、? 和 & 等结构字符,适合编码一个需要保持可导航的完整 URL。
解码对畸形的 % 序列保持严格——孤立的 % 或 %ZZ 会报错而不是悄悄放过,这正是浏览器和服务器对待它们的方式。
常见问题
- 什么时候用组件模式,什么时候用完整 URI 模式?
- 编码要放进 URL 里的一个值(搜索词、跳转目标、参数里的邮箱)→ 组件模式,这样值里的 & 和 = 不会破坏查询字符串。编码一条用于展示或传输的完整 URL → 完整 URI 模式,让 URL 结构得以保留。
- 为什么 + 有时表示空格?
- application/x-www-form-urlencoded 格式——HTML 表单提交和查询字符串所用——历史上把空格编码为 +。在 URL 路径里,+ 就是加号。这里的解码器按查询字符串语义把 + 当作空格;%20 在任何地方都有效。
- 为什么我的字符串被双重编码了(%2520)?
- %25 是 % 自身的编码,所以 %2520 意味着文本 %20 又被编码了一次。这发生在系统的两层各自编码时。在这里解码两次即可还原,然后修掉那个不该编码的层。
- Unicode 字符处理正确吗?
- 正确——文本先按 UTF-8 编码,再对每个字节做百分号转义,遵循 WHATWG URL 标准。这就是一个中日韩字符会变成三组 %XX 的原因。