Обычный #
фактически не разрешен во фрагменте :
fragment = *( pchar / "/" / "?" )
Где pchar эквивалентно этому расширению:
pchar = ALPHA / DIGIT / "-" / "." / "_" / "~" / "%" HEXDIG HEXDIG / "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" / ":" / "@"
Нет простого #
там. Таким образом, поведение Safari будет ожидаемым поведением.
Но, возможно, другие браузеры просто отображают %23
как #
для удобства чтения.