如何对字符串进行 URL 编码
百分号编码会把 URL 中不安全的字符替换为 %,后接该字符每个 UTF-8 字节的十六进制值。使用 encodeURIComponent() 的“组件”模式适合单个查询参数值或路径片段。
计算示例
| 字符 | UTF-8 字节 | 组件 |
|---|---|---|
| ␠ | %20 | %20 |
| & | %26 | %26 |
| = | %3D | %3D |
| / | %2F | %2F |
| ? | %3F | %3F |
| é | %C3 %A9 | %C3%A9 |
| 😀 | %F0 %9F %98 %80 | %F0%9F%98%80 |
“组件”模式把整句话编码成一个安全的值。
- 输入
- rock & roll/size=XL? café 😀
- 结果 ·
encodeURIComponent() - rock%20%26%20roll%2Fsize%3DXL%3F%20caf%C3%A9%20%F0%9F%98%80
“完整 URL”模式会保留 & = / ? 不变,因此只应用于完整的 URL。
- 输入
- rock & roll/size=XL? café 😀
- 结果 ·
encodeURI() - rock%20&%20roll/size=XL?%20caf%C3%A9%20%F0%9F%98%80
工具的处理方式
- 字母 A–Z 和 a–z、数字 0–9 以及 - _ . ! ~ * ' ( ) 始终保持不变。
- 其他字符都会先转换为 UTF-8 字节,每个字节写成 % 加两位大写十六进制数:é 占两个字节,大多数表情符号占四个字节。
- “组件”模式还会编码保留字符 : / ? # [ ] @ & = + $ , ;,因此它们无法改变 URL 的结构。