Я использую идентификатор фрагмента для создания постоянной ссылки для событий AJAX в моем веб-приложении, подобном этому парню. Что-то как:
http://www.myapp.com/calendar#filter:year/2010/month/5
Я сделал довольно мало поиска, но не могу найти список допустимых символов для фрагмента idenitifer. Спецификация W3C ничего не предлагает.
Я должен закодировать символы то же, как URL в имеет в целом?
Кажется, нет никакой хорошей информации об этом нигде.
См. 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]
, -
, .
, _
, ~
, :
, @
, /
, и ?
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.