我正在使用片段标识符在我的Web应用程序中为此家伙创建AJAX事件的永久链接。就像是:
http://www.myapp.com/calendar#filter:year/2010/month/5
我已经做了很多搜索,但是找不到片段idenitifer的有效字符列表。在W3C规范不提供任何内容。
我是否需要将字符编码为与通常的URL相同的字符?
似乎在任何地方都没有任何好的信息。
Answers:
参见RFC 3986。
fragment = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
所以,你可以使用!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
,东西匹配%[0-9a-fA-F]{2}
,匹配的东西[a-zA-Z0-9]
,-
,.
,_
,~
,:
,@
,/
,和?
%
仅允许作为转义字符。使用%25
编码单%
。
http://tools.ietf.org/html/rfc3986#section-3.5:
fragment = *( pchar / "/" / "?" )
和
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
pct-encoded = "%" HEXDIG HEXDIG
所以,组合,该片段不能包含#
,原料%
,^
,[
,]
,{
,}
,\
,"
,<
和>
根据RFC。
VERTICAL BAR (|)
,GRAVE ACCENT (`)
并且SPACE ( )
不在清单中。因此,不在列表中的可打印(7位)US-ASCII字符的完整列表为:"#%< >[\]^`{|}