URL 编码 / 解码(百分号编码)

在线 URL 编码解码工具:支持整段转义与保留 URL 结构两种模式,中文与特殊字符正确处理,可自动解析查询参数。全部在浏览器本地运行,不上传数据。

URL 编码(又称百分号编码)把 URL 中不允许直接出现的字符转换成 % 加两位十六进制的形式。中文、空格、&、=、# 这类字符如果不编码,会让服务器把参数值误读成新的参数分隔符。

本工具提供两种模式:整段转义会把所有保留字符一并编码,适合处理单个参数值;保留 URL 结构会放过 :/?#&=,适合处理一整条链接。所有转换在浏览器中完成,输入的链接和参数不会发送到服务器。

两种模式该选哪一个

判断标准很简单:要编码的内容是参数值还是整条 URL。参数值用「整段转义」,例如搜索关键词 a&b 必须编码为 a%26b,否则后端只会收到 a。整条链接用「保留 URL 结构」,否则 https://example.com/a?b=1 里的冒号与斜杠也会被编码成 %3A%2F%2F,链接直接失效。

常见使用场景

  • 拼接接口请求时,对参数值做转义避免特殊字符截断
  • 排查为什么中文参数传到后端变成了乱码或百分号串
  • 从浏览器地址栏复制链接时还原成可读形式
  • 解析一条查询字符串,逐项查看参数名与参数值

关于加号的一个陷阱

在 application/x-www-form-urlencoded 表单编码中,空格被编码为 + 而不是 %20。因此解码时如果内容来自表单提交,需要把 + 先当作空格处理;而如果 + 本身是数据的一部分(例如某些 token 或电话号码),就不能这样转换。工具中提供了开关,按数据来源选择即可。

常见问题

编码后 %20 和 + 有什么区别?

两者都表示空格,但适用场合不同。%20 是 URL 路径与通用场景的标准写法;+ 只在 application/x-www-form-urlencoded 表单编码中表示空格。不确定时优先使用 %20。

中文编码后为什么是一串 %E4%B8%AD?

中文按 UTF-8 编码后每个汉字占 3 个字节,每个字节再写成 % 加两位十六进制,所以一个汉字会变成 3 组共 9 个字符,这是正常现象。

解码报错 URI malformed 怎么办?

说明字符串中有不完整的 % 转义序列,例如以 % 结尾、或 % 后面不是两位十六进制数字。这通常是被截断或重复编码导致的,需回到数据源检查。

会出现重复编码吗?

会。% 本身被编码为 %25,如果再对结果编码一次,%25 会变成 %2525。本工具编码前不会自动解码,请确认输入是原始内容而不是已经编码过的串。

相关教程

相关工具