> 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)中,出于历史原因,空格也可以被编码为 +。两种写法都是有效的,只是在不同场景中使用。

其他语言