J'encode une chaîne qui sera passée dans une URL (via GET). Mais si j'utilise escape
, encodeURI
ou encodeURIComponent
, &
sera remplacé par %26amp%3B
, mais je veux qu'il soit remplacé par %26
. Qu'est-ce que je fais mal?
javascript
urlencode
dododedodonl
la source
la source
&
est la bonne façon d'échapper à l'esperluette dans un contexte HTML ... d'où vient votre source? et quelle est la destination? Il peut être préférable de faire cela côté serveur par exemple.Réponses:
Sans voir votre code, il est difficile de répondre à part un coup de couteau dans le noir. Je suppose que la chaîne que vous passez à encodeURIComponent () , qui est la bonne méthode à utiliser, provient du résultat de l'accès à la propriété innerHTML . La solution est d'obtenir la innerText / textContent valeur de la propriété à la place:
Si ce n'est pas le cas, vous pouvez utiliser la méthode replace () pour remplacer l'entité HTML:
la source
Si vous l'avez fait littéralement:
Ensuite, le résultat est
%26
, vous pouvez le tester ici . Assurez-vous que la chaîne que vous encodez est juste&
et non&
pour commencer ... sinon elle est encodée correctement, ce qui est probablement le cas. Si vous avez besoin d'un résultat différent pour une raison quelconque, vous pouvez faire un.replace(/&/g,'&')
avant l'encodage.la source
Il existe des encodages HTML et URI.
&
est&
codé en HTML alors qu'il%26
est&
en codage URI .Donc, avant de coder l'URI de votre chaîne, vous voudrez peut-être décoder HTML puis coder l'URI :)
résultat
%26AndOtherHTMLEncodedStuff
J'espère que cela vous fait gagner du temps
la source