KentZhou
KentZhou

Reputation: 25583

How can I include special characters in query strings?

URL http://localhost/mysite/mypage?param=123 works fine. However, if I want to put some special characters in param, like ?, /, \, then the URL becomes http://localhost/mysite/mypage?param=a=?&b=/ or http://localhost/mysite/mypage?param=http://www.example.com/page2?a=\&b=... which won't work. How do I resolve this issue?

Upvotes: 43

Views: 210068

Answers (7)

JYelton
JYelton

Reputation: 36546

You need to use encode special characters, see this (archive of dead link) page for a reference.

If you're using PHP, there's a function to do this, called urlencode().

Upvotes: 3

Vishal Seth
Vishal Seth

Reputation: 5048

In JavaScript you can use the encodeURI() function.

ASP has the Server.URLEncode() function.

You can use HttpServerUtility.UrlEncode in .NET.

Upvotes: 6

Thavaprakash Swaminathan
Thavaprakash Swaminathan

Reputation: 6994

I did below, it works fine.

const myQueryParamValue = "You&Me";
const ajaxUrl = "www.example.com/api?searchText="+encodeURIComponent(myQueryParamValue)

Upvotes: 2

Kop4lyf
Kop4lyf

Reputation: 4590

You need to encode the query parameters before combining them to form a url. The function needed here is encodeURIComponent.For example,

the url you need to create is:

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

Now, assuming that ? and / comes as variables, you need to encode them before putting in the url. So lets create your url using this function(I am expecting two query parameters):

 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"

This function is in basic JS and supported in all the browsers.

Upvotes: 19

Hardik Mandankaa
Hardik Mandankaa

Reputation: 3376

Easy way to pass QueryString value with special character using javascript:

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

Upvotes: 8

Moonshield
Moonshield

Reputation: 935

You need to substitute the characters with URL entities. Some information here.

Upvotes: 0

Steven P.
Steven P.

Reputation: 939

You have to encode special characters in URLs. See: http://www.w3schools.com/tags/ref_urlencode.asp

Upvotes: 36

Related Questions