Estou codificando uma string que será passada em uma URL (via GET). Mas se eu usar escape
, encodeURI
ou encodeURIComponent
, &
será substituído por %26amp%3B
, mas quero que seja substituído por %26
. O que estou fazendo de errado?
javascript
urlencode
dododedodonl
fonte
fonte
&
é a maneira correta de escapar do e comercial em um contexto HTML ... de onde vem sua fonte? e qual é o destino? Pode ser melhor fazer isso do lado do servidor, por exemplo.Respostas:
Sem ver seu código, é difícil responder além de uma facada no escuro. Eu acho que a string que você está passando para encodeURIComponent () , que é o método correto a ser usado, é proveniente do resultado do acesso à propriedade innerHTML . A solução é obter o innerText / textContent valor da propriedade em vez disso:
Se não for esse o caso, você pode usar o método replace () para substituir a entidade HTML:
fonte
Se você fez literalmente isso:
Em seguida, o resultado é
%26
, você pode testá-lo aqui . Verifique se a string que você está codificando é justa&
e não&
para começar ... caso contrário, ela está codificando corretamente, o que provavelmente é o caso. Se você precisar de um resultado diferente por algum motivo, poderá fazer um.replace(/&/g,'&')
antes da codificação.fonte
Existem codificações HTML e URI.
&
é&
codificado em HTML enquanto%26
está&
na codificação de URI .Portanto, antes do URI codificar sua sequência, você pode decodificar o HTML e depois codificá-lo :)
resultado
%26AndOtherHTMLEncodedStuff
Espero que isso economize algum tempo
fonte