Я кодирую строку, которая будет передана в URL (через GET). Но если я использую escape
, encodeURI
или encodeURIComponent
, &
будет заменен на %26amp%3B
, но я хочу, чтобы он был заменен на %26
. Что я делаю не так?
javascript
urlencode
dododedodonl
источник
источник
&
это правильный способ избежать амперсанда в контексте HTML ... откуда ваш источник? а какой пункт назначения? Может быть, лучше сделать это на стороне сервера, например.Ответы:
Не видя ваш код, трудно ответить, кроме удара в темноте. Я бы предположил, что строка, которую вы передаете в encodeURIComponent () , который является правильным методом для использования, исходит из результата доступа к свойству innerHTML . Решение состоит в том, чтобы вместо этого получить значение свойства innerText / textContent :
Если это не так, вы можете использовать метод replace () для замены сущности HTML:
источник
Если вы сделали буквально это:
Тогда результат
%26
, вы можете проверить это здесь . Убедитесь, что строка, которую вы кодируете, просто&
и не&
для начала ... в противном случае она кодируется правильно, что, скорее всего, и так. Если вам нужен другой результат по какой-то причине, вы можете сделать.replace(/&/g,'&')
перед кодировкой.источник
Есть кодировки HTML и URI.
&
будет&
закодирован в формате HTML , а%26
это&
в кодировке URI .Поэтому перед URI-кодированием вашей строки вы можете захотеть HTML-декодирование, а затем URI-кодирование :)
результат
%26AndOtherHTMLEncodedStuff
Надеюсь, это сэкономит вам время
источник