1
votes

encodage de l'URL en javascript non encodé &

J'encode la chaîne suivante en javascript

qry=m%20&%20l

Cela me donne une sortie

encodeURI = "?qry=M & L";

Donc, le "&" de M & L n'est pas encodé. Que dois-je faire?


0 commentaires

6 Réponses :


2
votes

N'encode pas les caractères qui ont une signification spéciale (réservé caractères) pour un URI. L'exemple suivant montre toutes les pièces qui un "schéma" d'URI peut éventuellement contenir.

Référence p>

encodeURI code > n'encodera pas les caractères spéciaux suivants

let uri = "?qry=M & L"

console.log(encodeURIComponent(uri))

A-Z a-z 0-9 - _ . ! ~ * ' ( )

Vous pouvez donc utiliser encodeURIComponent , cela encodera tous les caractères sauf ceux-ci

let uri = "?qry=M & L"

console.log(encodeURI(uri))

A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #

0 commentaires

1
votes

Le encodeURI () code> ne va pas encoder & car il encodera uniquement certains jeux de caractères spéciaux. pour coder & vous devez utiliser encodeURIComponent .

encodeURI encode tout sauf:

const URL = "https://www.example.com/resource?query=10&id=20&name=hello%"

console.log(encodeURI(URL));
console.log(encodeURIComponent(URL));

encodeURIComponent encode tout sauf:

console.log(encodeURIComponent("?qry=M & L"));

A-Z a-z 0-9 - _ . ! ~ * ' ( )

Notez la différence entre les deux méthodes utilisées pour encoder des URL.

A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #

Depuis MDN :

Notez qu'encodeURI ne peut pas à lui seul former HTTP GET et POST corrects requêtes, comme pour XMLHTTPRequests, car "&", "+" et "=" sont non encodé, qui sont traités comme des caractères spéciaux dans GET et POST demandes. encodeURIComponent, cependant, encode ces caractères


0 commentaires

1
votes

utilisez plutôt encoreURIComponent pour encoder & comme % 26 comme indiqué ci-dessous. Mais il encode également d'autres caractères spéciaux comme ? et =

let uri = "?qry=M & L"

console.log(encodeURIComponent(uri))


0 commentaires

-1
votes

De ici

La fonction encodeURI () est utilisée pour encoder un URI.

Cette fonction encode les caractères spéciaux, sauf:, /? : @ & = + $ # (Utilisez encodeURIComponent () pour encoder ces caractères).

Et, voir aussi cette réponse

Donc, vous devrez probablement faire quelque chose comme

var inputWithSplChars = "M & L";
encodeURI  = "?qry=" + encodeURIComponent(inputWithSplChars);

J'espère que cela vous aidera! Bravo!


0 commentaires

0
votes

Vous devriez utiliser encodeURIComponent () au lieu de encodeURI ()

Remarque : En général, encodeURIComponent () est utilisé pour encoder une chaîne (chaîne de requête), qui serait placée dans l'URL. Si vous utilisez une URL existante à encoder, vous pouvez utiliser encodeURI ()

const uri = "?qry=M & L";

console.log(encodeURIComponent(uri));

Référence : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent


0 commentaires

0
votes

Référence ici: encodage d'url Vous avez trois options:

escape(str) will not encode: * @ - _ + . /
encodeURI(uri) will not encode: ~!@#$&*()=:/,;?+'
encodeURIComponent(uri) will not encode: ~!*()'


0 commentaires