Я кодирую строку, которая будет передана по URL-адресу (через GET). Но если я использую escape
, encodeURI
или encodeURIComponent
, &
будет заменен на %26amp%3B
, но я хочу, чтобы он был заменен на %26
. Что я делаю не так?URL encode видит «&» (амперсанд) как «&» Объект HTML
ответ
Не видя своего кода, трудно ответить, кроме удара в темноте. Я бы предположил, что строка, которую вы передаете в encodeURIComponent(), который является правильным методом для использования, исходит из результата доступа к объекту innerHTML. Решение состоит в том, чтобы получить InnerText/TextContent значение свойства вместо:
var str,
el = document.getElementById("myUrl");
if ("textContent" in el)
str = encodeURIComponent(el.textContent);
else
str = encodeURIComponent(el.innerText);
Если это не так, то вы можете использовать заменить() метод для замены HTML сущности:
encodeURIComponent(str.replace(/&/g, "&"));
Если вы сделали это буквально:
encodeURIComponent('&')
Тогда результат %26
, you can test it here. Убедитесь, что строка, которую вы кодируете, составляет только&
, а не &
для начала ... в противном случае это кодирование правильно, что вполне вероятно. Если по какой-то причине вам нужен другой результат, вы можете сделать .replace(/&/g,'&')
перед кодировкой.
... это, вероятно, его проблема. –
Имеются кодировки HTML и URI. &
является &
encoded in HTML в то время как %26
является &
в URI encoding.
Так что перед URI, кодирующим вашу строку, которую вы можете захотеть HTML декодировать и затем URI кодировать :)
var div = document.createElement('div');
div.innerHTML = '&AndOtherHTMLEncodedStuff';
var htmlDecoded = div.firstChild.nodeValue;
var urlEncoded = encodeURIComponent(htmlDecoded);
результат %26AndOtherHTMLEncodedStuff
Надежда это экономит ваше время
Где приходит строка из? Можете ли вы опубликовать код, который у вас есть? –
'&' - это правильный способ избежать амперсанда в контексте HTML ... откуда исходит ваш источник? и какой пункт назначения? Например, может быть лучше сделать эту серверную сторону. –
Я рисую что-то из тела HTML (и это кодируется HTML (так, есть & Я понимаю сейчас)), и я должен передать его в URL-адрес ... Итак, мне нужно декодировать html (но как?) en затем кодирует строку (с encodeURIComponent) ... – dododedodonl