> percent | url | rfc3986 <
// 百分号编码 —— 将字符转换为适用于 URL / URI 的 %XX 格式
[RFC3986]
符合标准
遵循 RFC 3986 规范实现 URI 百分号编码。
[UNICODE]
完整 Unicode 支持
正确处理 UTF‑8 编码的 Unicode 字符和表情符号。
[FLEXIBLE]
灵活编码选项
可在标准编码与“编码所有字符”模式之间自由切换。
>> 技术说明
百分号编码的工作原理:
百分号编码会将不安全的 ASCII 字符替换为百分号 (%) 加上两个十六进制数字,这两个数字表示该字符的字节值。UTF‑8 字符会被编码为多个 %XX 序列。
示例:
"Hello World!" → Hello%20World%21
什么时候需要使用百分号编码:
- >URL / URI 编码
- >表单数据提交
- >查询字符串参数
- >URL 路径组件
- >HTTP 头与 Cookie
>> 常见问题
什么是百分号编码?
百分号编码(也称为 URL 编码)是一种在 URI 中编码信息的机制,通过将不安全的 ASCII 字符替换为“%”加上两个十六进制数字来实现。
什么时候应该使用百分号编码?
当你在 URL、查询参数、表单数据或其他上下文中包含特殊字符,而这些字符具有特殊含义并需要转义时,就需要使用百分号编码。
encodeURI 和 encodeURIComponent 有什么区别?
encodeURI 用于编码整个 URI,会保留 :/?#[]@ 等字符;encodeURIComponent 会编码除未保留字符 (A‑Z, a‑z, 0‑9, -, _, ., ~) 以外的所有字符。
为什么空格会变成 %20 或 +?
在 URL 中,空格通常被编码为 %20。在表单数据(application/x-www-form-urlencoded)中,出于历史原因,空格也可以被编码为 +。两种写法都是有效的,只是在不同场景中使用。