URL 编码又叫百分号编码(Percent-Encoding),定义在 RFC 3986 中:把 URL 里不允许直接出现的字符先转成 UTF-8 字节,再把每个字节写成“%”加两位十六进制数,例如空格写成 %20,“中”写成 %E4%B8%AD。下面重点说明步骤与复杂度。
URL编码算法要点
浏览器或程序逐个检查字符:属于非保留字符的原样保留;其余字符先按 UTF-8 转成字节,每个字节输出为“%XX”(大写十六进制)。例如“问”的 UTF-8 字节是 E9 97 AE,编码后为 %E9%97%AE。
示例
输入:abc
编码结果:abc
说明:按 RFC 3986 编码,空格为 %20,中文按 UTF-8。
常见用途
- 拼接带中文或特殊字符的查询参数
- 表单 GET/POST 提交(x-www-form-urlencoded)
- 把一个网址作为另一个网址的参数(如回调地址 redirect_uri)
- API 签名前对参数做规范化编码
常用参数
常见参数:字符集(UTF-8/GBK)、空格编码为 %20 还是“+”、保留哪些字符不编码(Python quote 的 safe 参数,默认保留“/”)。
本站的URL编码解码工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【URL 编码能防止 XSS 吗?】不能完全防止。URL 编码只解决网址格式问题,输出到网页时还需要做 HTML 转义。
【出现 %25 是怎么回事?】“%”被再次编码成了 %25,说明发生了重复编码。
【哪些字符不用编码?】字母、数字和 - _ . ~ 四个符号不用编码。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。