Кодирование всех специальных символов в Javascript
Мне нужно закодировать строку, которую я получаю здесь, и передать ее как параметр URL, поэтому я не верю, что смогу передать либо / или парантез (поэтому, учитывая, что у меня есть следующая строка
KEY WEST / Florida(FL)
Я пробую следующее
encodeURIComponent("KEY WEST / Florida(FL)")
"KEY%20WEST%20%2F%20Florida(FL)"
escape("KEY WEST / Florida(FL)")
"KEY%20WEST%20/%20Florida%28FL%29"
Ни один из них не кодирует строку, которую я могу декодировать позже в своем коде, так как первый сохраняет (), а второй сохраняет /
Как мне сделать это за один раз, а потом при необходимости расшифровать?
Также кажется, что escape () устарел, поэтому какой способ кодирования предпочтительнее?
Ответы
Для получения URL кодирования encodeURIи encodeURIComponentфункции должны быть использованы.
encodeURIкодирует только специальные символы, а encodeURIComponentтакже кодирует символы, которые имеют значение в URL-адресе, поэтому он используется, например, для кодирования строк запроса.
Круглые скобки (как объясняется здесь ), однако, разрешены в любом месте URL-адреса без их кодирования, поэтому encodeURIComponentоставляем их как есть.
escapeФункции можно считать устаревшим , и , хотя он официально не является, его следует избегать.
так какой способ кодирования предпочтительнее?
- Для целых URL-адресов encodeURI
- Для частей URL, например строки запроса фрагмента, encodeURIComponent
Также см. Когда вы должны использовать escape вместо encodeURI/ encodeURIComponent?