URL 编码 (也称为百分号编码) 是将 URL 中不安全或保留的字符转换为 "%" 后跟两位十六进制数的格式的过程。例如,空格被编码为 "%20",中文字符 "你好" 被编码为 "%E4%BD%A0%E5%A5%BD"。这种编码确保 URL 在所有系统和协议中都能正确传输。
URL 编码的必要性源于 URL 规范 (RFC 3986) 对允许字符的严格限制。URL 中只能直接使用字母 (A-Z, a-z)、数字 (0-9) 和少数特殊字符 (-, _, ., ~)。其他字符,包括空格、中文、日文等非 ASCII 字符,以及 &、=、? 等保留字符,都必须经过编码才能安全地包含在 URL 中。欢迎参阅在 Amazon 搜索 Web 标准书籍。
在 URL 缩短服务中,URL 编码是处理用户提交的长 URL 时必须正确处理的关键环节。服务需要正确解码用户输入的 URL、验证其有效性、存储原始形式、并在重定向时正确编码输出。
常见的编码问题包括双重编码 (已编码的 URL 被再次编码)、编码不一致 (部分字符编码而部分未编码)、以及不同编程语言的编码函数行为差异。在 Amazon 搜索 Web 开发调试书籍讨论了这些常见陷阱。