URL 片段 (location.hash) 中的合格字符是什么?

Tho*_*ran 3 unicode url web iri

上下文:我正在创建一个将其数据存储在 location.hash 中的应用程序。我想编码尽可能少的字符以保持最大的易读性。

如此答案中所解释的,URL 的每个段的保留字符都不同。那么 URL Fragment/location.hash 具体有哪些限制呢?

相关文章: URL 中的 Unicode 字符

Tho*_*mas 5

根据RFC 3986:统一资源标识符 (URI)

fragment      = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded   = "%" HEXDIG HEXDIG
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
              / "*" / "+" / "," / ";" / "="
Run Code Online (Sandbox Code Playgroud)

解压所有这些,并忽略百分比编码,我发现以下字符集:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~!$&'()*+,;=:@/?
Run Code Online (Sandbox Code Playgroud)

尽管 RFC没有强制要求特定的编码并且仅处理字符(而不是字节),但根据第 2.3 节, ALPHA仅表示 ASCII,即拉丁字母表的 26 个字母。因此,任何非 ASCII 字母都必须进行百分比编码。