То, что на самом деле кажется «обработанным», выглядит так:
<a href="Something/C#">C#</a><br />
Неа. Если вы наведите курсор мыши на ссылку, Firefox сообщит вам в строке состояния, что ссылка идет на «C #», но она врет. На самом деле нажмите на ссылку, и в результате вы получите «C% 23» (оно появится прямо в адресной строке).
Как правильно избежать этого, чтобы ссылка оставалась "Something / C% 23"?
Вы правильно поняли в первый раз. «Something / C% 2523» закодировано слишком много.
Я заметил странную мелочь здесь. Если вы используете функцию для создания ссылки. Дополнительный выход% 25 не требуется.
Нахождение в функции или нет, не влияет на нее. будет влиять на него и может вас здесь смущать, если вы используете адресную строку для ввода javascript: URL-адресов в качестве механизма тестирования. javascript: URL-адреса по-прежнему являются URL-адресами, и любое% -кодирование в них будет отменено за один шаг до того, как интерпретатор JS увидит код. Если бы вы использовали экранирование строкового литерала JS, вы бы не столкнулись с этой проблемой:
javascript:alert(document.body.innerHTML='<a href="Something/C\x2523">C#</a>')