简体   繁体   中英

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?

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

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.

In JavaScript you can use the encodeURI() function.

ASP has the Server.URLEncode() function.

You can use HttpServerUtility.UrlEncode in .NET.

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

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

You need to use encode special characters, see this page for a reference.

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

I did below, it works fine.

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM