URL中片段标识符的有效字符列表?

soh*_*970 83 fragment-identifier

我正在使用片段标识符为我的Web应用程序中的AJAX事件创建一个永久链接,类似于这个人.就像是:

http://www.myapp.com/calendar#filter:year/2010/month/5
Run Code Online (Sandbox Code Playgroud)

我做了很多搜索,但找不到片段识别符的有效字符列表.在W3C规范不提供任何内容.

我是否需要将字符编码与一般的URL相同?

在任何地方似乎都没有任何好的信息.

Art*_*cto 93

请参阅RFC 3986.

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

所以,你可以使用!,$,&,',(,),*,+,,,;,=,东西匹配%[0-9a-fA-F]{2},匹配的东西[a-zA-Z0-9],-,.,_,~,:,@,/,和?

  • @AndreaRatto`%20` (2认同)

ken*_*ytm 30

http://tools.ietf.org/html/rfc3986#section-3.5:

fragment    = *( pchar / "/" / "?" )
Run Code Online (Sandbox Code Playgroud)

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

所以,组合,该片段不能包含#,原料%,^,[,],{,},\,",<>根据RFC.

  • 我想你错过了不可打印的ASCII字符和非ascii字符. (2认同)
  • 似乎您在非列表中忘记了“ VERTICAL BAR(|)”和“ GRAVE ACCENT(`)``和” SPACE()“。因此,不在列表中的可打印(7位)US-ASCII字符的完整列表为:``“#%&lt;&gt; [\] ^`{|}`` (2认同)