URL 编码与最佳实践
URL 编码 (URL Encoding),又称作 Percent Encoding,编码由 % 与两位十六进制组成,是用于 URL 中的编码机制。见 百分号编码。
未保留字符与编码规则
以下字符为未保留字符:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~。建议所有的 URI 对未保留字符不加以百分号编码,其它字符建议先转换为 UTF-8 再逐字节使用百分号编码。
编码规则:1. 未保留字符保持不变 2. 其他字符先转换为 UTF-8 编码 3. 将 UTF-8 编码的每个字节转换为百分号编码。
转化过程
如「山月」:在 Unicode To UTF-8 中可知其 UTF-8 编码为 E5 B1 B1 E6 9C 88,对其分别添加百分号得 %E5%B1%B1%E6%9C%88。
相关工具
与 UTF-8 的联系
URL 编码与 UTF-8 密切相关。对非 ASCII 字符进行 URL 编码时:第一步将字符转换为 UTF-8 字节序列,第二步对每个 UTF-8 字节应用百分号编码。理解 UTF-8 有助于理解为什么 URL 编码会产生特定结果。
URL 编码最佳实践
- 始终编码用户输入
- 使用正确的编码函数(如 JavaScript 中 encodeURIComponent 与 encodeURI 有区别)
- 注意编码的范围
- 避免重复编码
- 考虑国际化
- 测试边界情况
- 遵循 RFC 3986