Я кодирую строку, которая будет передана в URL (через GET). Но если я использую escape
, encodeURI
или encodeURIComponent
, &
будет заменено на %26amp%3B
, но я хочу, чтобы оно было заменено на %26
. Что я делаю не так?
Не видя вашего кода, трудно ответить иначе, чем усомниться. Я бы предположил, что строка, которую вы передаете в encodeURIComponent(), что является правильным методом для использования, происходит из результата доступа к свойству innerHTML. Решением является получение значения свойства innerText/textContent вместо этого:
var str,
el = document.getElementById("myUrl");
if ("textContent" in el)
str = encodeURIComponent(el.textContent);
else
str = encodeURIComponent(el.innerText);
Если это не так, вы можете использовать метод replace() для замены HTML-сущности:
encodeURIComponent(str.replace(/&/g, "&"));
Если вы сделали буквально следующее:
encodeURIComponent('&')
Тогда результат будет %26
, вы можете проверить это здесь. Убедитесь, что строка, которую вы кодируете, это просто &
, а не &
для начала... в противном случае она кодируется правильно, что, скорее всего, так и есть. Если по какой-то причине вам нужен другой результат, вы можете выполнить .replace(/&/g,'&')
перед кодированием.