URL encode видит "&" (амперсанд) как "&" HTML entity

Я кодирую строку, которая будет передана в URL (через GET). Но если я использую escape, encodeURI или encodeURIComponent, & будет заменено на %26amp%3B, но я хочу, чтобы оно было заменено на %26. Что я делаю не так?

292
задан Sebastian Simon 30 January 2017 в 08:40
поделиться

2 ответа

Не видя вашего кода, трудно ответить иначе, чем усомниться. Я бы предположил, что строка, которую вы передаете в 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, "&"));
435
ответ дан 23 November 2019 в 01:40
поделиться

Если вы сделали буквально следующее:

encodeURIComponent('&')

Тогда результат будет %26, вы можете проверить это здесь. Убедитесь, что строка, которую вы кодируете, это просто &, а не & для начала... в противном случае она кодируется правильно, что, скорее всего, так и есть. Если по какой-то причине вам нужен другой результат, вы можете выполнить .replace(/&/g,'&') перед кодированием.

94
ответ дан 23 November 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: