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?
 
    
    - 21
- 1
- 1
- 7
 
    
    - 24,805
- 41
- 134
- 200
7 Answers
You have to encode special characters in URLs. See: http://www.w3schools.com/tags/ref_urlencode.asp
 
    
    - 941
- 5
- 15
- 
                    1If you have special characters like " / ? : @ & = + $ #" then you need to use this extended function: https://www.w3schools.com/jsref/jsref_encodeuricomponent.asp – pegaltier Jul 31 '19 at 09:16
- 
                    2The more valid reference would be MDN, see below... https://stackoverflow.com/a/35377890/147618 – Dharmang Dec 23 '19 at 10:48
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.
 
    
    - 4,520
- 1
- 25
- 31
Easy way to pass QueryString value with special character using javascript:
var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;
 
    
    - 3,129
- 4
- 23
- 32
In JavaScript you can use the encodeURI() function.
ASP has the Server.URLEncode() function.
You can use HttpServerUtility.UrlEncode in .NET.
 
    
    - 21
- 1
- 1
- 7
 
    
    - 4,948
- 7
- 26
- 28
- 
                    in .Net you want to use `HttpUtility.UrlEncode` https://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode(v=vs.110).aspx – GJKH Mar 07 '16 at 13:27
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().
 
    
    - 35,664
- 27
- 132
- 191
I did below, it works fine.
const myQueryParamValue = "You&Me";
const ajaxUrl = "www.example.com/api?searchText="+encodeURIComponent(myQueryParamValue)
 
    
    - 6,226
- 2
- 30
- 31
You need to substitute the characters with URL entities. Some information here.
 
    
    - 925
- 9
- 16