DevToolBox免费
博客

百分号编码工具

完整的百分号编码转换器和 RFC 3986 参考。查看逐字符分解,探索保留字符和非保留字符集。

百分号编码(也称 URL 编码)由 RFC 3986 定义为在 URI 中编码任意数据的机制。每个字节表示为百分号(%)后跟两个十六进制数字。此工具显示输入中每个字符的百分号编码形式,并提供完整的 RFC 3986 参考。

RFC 3986 百分号编码参考

RFC 3986 定义了 URI 中哪些字符无需编码。所有其他字符必须百分号编码为 %XX,其中 XX 是每个字节的十六进制值。

非保留字符(永远不需要编码)

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~

保留字符(在 URI 中有特殊含义)

字符编码形式URI 中的用途
:%3AScheme/port separator (http:, :8080)
/%2FPath segment separator (/path/to)
?%3FQuery string start (?key=value)
#%23Fragment identifier (#section)
[%5BIPv6 address bracket
]%5DIPv6 address bracket
@%40User info separator (user@host)
!%21Sub-delimiter
$%24Sub-delimiter
&%26Query parameter separator (&key=value)
'%27Sub-delimiter
(%28Sub-delimiter
)%29Sub-delimiter
*%2ASub-delimiter
+%2BSub-delimiter (also space in forms)
,%2CSub-delimiter
;%3BSub-delimiter (path parameters)
=%3DKey-value separator (key=value)

必须编码的字符(常见示例)

字符编码形式URI 中的用途
space%20Not allowed in URIs
"%22Not allowed (delimiter in HTML)
<%3CNot allowed (HTML tag)
>%3ENot allowed (HTML tag)
{%7BNot allowed (URI template)
}%7DNot allowed (URI template)
|%7CNot allowed
\%5CNot allowed (escape char)
^%5ENot allowed
`%60Not allowed
%%25Percent sign itself (to avoid ambiguity)

FAQ

什么是百分号编码?
百分号编码是 RFC 3986 定义的在 URI 中编码字符的标准机制。不允许在 URI 组件中出现的字符表示为 %XX,其中 XX 是每个字节的十六进制值。对于多字节 UTF-8 字符,每个字节单独百分号编码。
RFC 3986 和 RFC 2396 有什么区别?
RFC 3986(2005)取代了 RFC 2396(1998)。主要区别是 RFC 3986 移除了"mark"和"unreserved"字符的区分,将非保留字符集简化为 A-Z a-z 0-9 - _ . ~,并将波浪号(~)从保留变为非保留。
为什么空格编码为 %20 而不是 +?
在 RFC 3986 百分号编码中,空格始终编码为 %20。空格的 + 表示来自 HTML 表单使用的 application/x-www-form-urlencoded 格式,这是一个独立的编码标准。%20 是在 URI 中任何地方都有效的通用标准。encodeURIComponent 使用 %20,而不是 +。
𝕏 Twitterin LinkedIn

评价此工具

4.0 / 5 · 197 人评价

保持更新

获取每周开发技巧和新工具通知。

无垃圾邮件,随时退订。

Enjoy these free tools?

Buy Me a Coffee