Глядя на RFC для URL, раздел 3.5 идентификатор фрагмента (который, я полагаю, вы ссылаетесь) определяется как
fragment = *( pchar / "/" / "?" )
и от Приложение A
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Интересно, что в спецификации также сказано, что
"Символам косой черты (" / ") и вопросительного знака ("? ") Разрешено представлять данные в идентификаторе фрагмента."
Итак, похоже, что настоящие якоря, такие как
<a href="#name?a=1&b=2">
....
<a name="name?a=1&b=2">
должны быть допустимыми и очень похожи на обычную строку запроса URL. (Быстрая проверка подтвердила, что они работают правильно, по крайней мере, в chrome, firefox и т. Д.)
http://www.site.com/foo.html?real=1¶meters=2#fake=2¶meters=3
без проблем (например, переменная 'parameters' во фрагменте не должна мешать переменной в строке запроса)
Вы также можете использовать процентное кодирование, когда это необходимо ... и есть много других символов, определенных в подэлементах, которые можно использовать.
Примечание:
Также из спецификации:
"Компонент идентификатора фрагмента указывается наличием символа знака числа (" # ") и завершается концом URI."
Таким образом, все, что после # является идентификатором фрагмента и не должно мешать параметрам GET.