网址片段(location.hash)中有哪些符合条件的字符?



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

正如在这个答案中解释的那样,URL的每个段的保留字符是不同的。那么URL Fragment/location的限制是什么呢?哈希特别吗?

相关文章:url中的Unicode字符

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

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

将所有这些解压缩,并忽略百分比编码,我发现了以下一组字符:

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

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

最新更新