Обычно правильная функция для URL-кодирования строки для использования в части URL-адреса - encodeURIComponent
. Не используйте escape
, которая является устаревшей нестандартной нестандартной схемой кодирования, уникальной для JavaScript. Это похоже на кодирование параметров URL, но обрабатывает плюсы и все не-ASCII символы по-разному. Поместите его вместе со стандартным декодером URL, и вы получите ошибки.
Тем не менее, вам не следует называть encodeURIComponent
сверх location.search
, если он дает вам плохие символы, такие как <
или >
(которые не должны появляться в URL, но в которые IE позволяет вам вводить), потому что он будет дважды кодировать символы, которые уже правильно закодированы; например, действительный %3C
в адресе (если пользователь перешел по ссылке правильно на ваш сайт) будет неправильно преобразован в %253C
.
Исправление «небезопасных» символов URL-адресов при одновременном оставлении уже закодированных символов - это то, для чего предназначена функция encodeURI
; попробуйте это (во всех браузерах, не нужно нюхать). Он редко используется, но может быть тем, что вам нужно. В противном случае вы смотрите на назойливую замену функции регулярного выражения и шестнадцатеричного кодирования.