URL 的片段 (location.hash) 中符合条件的字符是什么?
What are the eligible characters in a URL's Fragment (location.hash)?
上下文:我正在创建一个将其数据存储在 location.hash 中的应用程序。我想编码尽可能少的字符以保持最大的易读性。
如 this answer 中所述,URL 的每个段的保留字符都不同。那么 URL Fragment/location.hash 的具体限制是什么?
相关post:
Unicode characters in URLs
根据RFC 3986: Uniform Resource Identifier (URI):
fragment = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
解压所有这些,并忽略百分比编码,我发现以下字符集:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~!$&'()*+,;=:@/?
尽管 RFC does not mandate a particular encoding and deals in characters only (not bytes), according to Section 2.3 ALPHA
仅表示 ASCII,即拉丁字母表的 26 个字母。因此,任何非 ASCII 字母都必须进行百分比编码。
上下文:我正在创建一个将其数据存储在 location.hash 中的应用程序。我想编码尽可能少的字符以保持最大的易读性。
如 this answer 中所述,URL 的每个段的保留字符都不同。那么 URL Fragment/location.hash 的具体限制是什么?
相关post: Unicode characters in URLs
根据RFC 3986: Uniform Resource Identifier (URI):
fragment = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
解压所有这些,并忽略百分比编码,我发现以下字符集:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~!$&'()*+,;=:@/?
尽管 RFC does not mandate a particular encoding and deals in characters only (not bytes), according to Section 2.3 ALPHA
仅表示 ASCII,即拉丁字母表的 26 个字母。因此,任何非 ASCII 字母都必须进行百分比编码。