什么是百分号编码(URL 编码)?
URL 编码指南
URL 最初的设计只允许携带有限的一部分 ASCII 字符。如果把空格、非拉丁字母或 ?、& 这类特殊字符直接放进地址里,不同的浏览器或服务器可能会有不同的解释,甚至导致地址损坏。解决办法就是 百分号编码(percent-encoding),也就是人们通常所说的 URL 编码。
%XX 表示法的含义
百分号编码会把不安全的字符替换为其字节值的十六进制形式,并在前面加上 %。例如空格变成 %20,问号变成 %3F。像大多数非拉丁字母那样由多个字节组成的字符,会按 UTF-8 的每个字节各生成一个 %XX。
- 空格 →
%20 ?→%3F&→%26€(UTF-8) →%E2%82%AC
为什么以 UTF-8 为准
现代 Web 事实上以 UTF-8 为标准。浏览器的 encodeURIComponent 会先把文本转换为 UTF-8 字节,再把每个字节转换为 %XX。因此同一个字符的编码结果始终一致,解码后也能精确还原原文。
本站的编码/解码工具直接使用浏览器的内置函数,因此你输入的内容会即时转换,绝不会发送到服务器。
何时需要它
每当你 把任意字符串塞进地址的某个部分 时——比如含有搜索词的链接、查询参数的值,或放进另一个 URL 里的重定向目标 URL——就需要百分号编码。如果不编码,值中的 & 或 = 可能会被误认为分隔符,从而把参数截断。