web-dev-qa-db-fra.com

Comment inclure des caractères spéciaux dans les chaînes de requête

L'URL suivante fonctionne bien:

http: // localhost/mysite/mypage? param = 123

Cependant, si je veux mettre des caractères spéciaux dans `param tels que?, /, \, Alors l'URL devient:

http: // localhost/mysite/mypage? param = a =? & b =/

ou

http: // localhost/mysite/mypage? param = http: //www.mysite.com/page2? a = \ & b = ...

qui ne fonctionnera pas. Comment résoudre ce problème?

19
KentZhou

Vous devez encoder des caractères spéciaux dans les URL. Voir: http://www.w3schools.com/tags/ref_urlencode.asp

20
Steven P.

Vous devez encoder les paramètres de la requête avant de les combiner pour former une URL. La fonction nécessaire ici est encodeURIComponent . Par exemple,

l'URL que vous devez créer est:

http://localhost/mysite/mypage?param=a=?&b=/

Maintenant, en supposant que? et/en tant que variables, vous devez les encoder avant de placer l’URL . Nous allons donc créer votre URL en utilisant cette fonction (j’attends deux paramètres de requête):

 var q1 = "a=?"; //came from some input or something
    var q2 = "/"; //came from somewhere else

    var faultyUrl =  "http://localhost/mysite/mypage?param="+ q1 +"&b=" + q2; 
// "http://localhost/mysite/mypage?param=a=?&b=/"


    var properUrl =  "http://localhost/mysite/mypage?param="+ encodeURIComponent(q1) +"&b=" + encodeURIComponent(q2); 
//"http://localhost/mysite/mypage?param=a%3D%3F&b=%2F"

Cette fonction est en base JS et supportée par tous les navigateurs.

7
Kop4lyf

En JavaScript, vous pouvez utiliser la fonction encodeURI ()

ASP a la fonction Server.URLEncode () .

HttpServerUtility.UrlEncode dans .NET

3
Vishal Seth

Un moyen facile de transmettre la valeur QueryString avec un caractère spécial en utilisant javascript:

var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;
2
Hardik Mandankaa

Vous devez utiliser des caractères spéciaux, voir this page pour une référence.

Si vous utilisez PHP, il existe une fonction pour le faire, appelée urlencode () .

1
JYelton

Vous devez remplacer les caractères par des entités URL . Certaines informations ici.

0
Moonshield