URL编码容易踩的坑

52 0

URL 编码又叫百分号编码(Percent-Encoding),定义在 RFC 3986 中:把 URL 里不允许直接出现的字符先转成 UTF-8 字节,再把每个字节写成“%”加两位十六进制数,例如空格写成 %20,“中”写成 %E4%B8%AD。下面重点说明误区与规避。

URL编码容易踩的坑

  • 不要对整条 URL 重复编码,否则“%”会变成“%25”
  • JavaScript 的 escape() 已废弃,中文会编成 %uXXXX 的非标准格式
  • “+”在查询参数里可能被服务端当作空格
  • 老系统用 GBK 编码中文,与 UTF-8 结果不同

示例

输入:https://www.123wen.cn/?q=测试

编码结果:https%3A%2F%2Fwww.123wen.cn%2F%3Fq%3D%E6%B5%8B%E8%AF%95

说明:按 RFC 3986 编码,空格为 %20,中文按 UTF-8。

工作原理

浏览器或程序逐个检查字符:属于非保留字符的原样保留;其余字符先按 UTF-8 转成字节,每个字节输出为“%XX”(大写十六进制)。例如“问”的 UTF-8 字节是 E9 97 AE,编码后为 %E9%97%AE。

中文的处理

中文 URL 编码按 UTF-8:“中”→ %E4%B8%AD,“文”→ %E6%96%87。浏览器地址栏会把编码后的中文显示成原文,但实际发送的是编码后的形式。

本站的URL编码解码工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。

常见问题

【URL 编码能防止 XSS 吗?】不能完全防止。URL 编码只解决网址格式问题,输出到网页时还需要做 HTML 转义。

【出现 %25 是怎么回事?】“%”被再次编码成了 %25,说明发生了重复编码。

【哪些字符不用编码?】字母、数字和 - _ . ~ 四个符号不用编码。

文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: 编码 数码开发

抱歉,评论功能暂时关闭!