问题
The following URL works fine:
http://localhost/mysite/mypage?param=123
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.mysite.com/page2?a=\&b=...
which won't work. How do I resolve this issue?
回答1:
You have to encode special characters in URLs. See: http://www.w3schools.com/tags/ref_urlencode.asp
回答2:
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.
回答3:
In JavaScript you can use the encodeURI() function.
ASP has the Server.URLEncode() function.
HttpServerUtility.UrlEncode in .NET
回答4:
Easy way to pass QueryString value with special character using javascript:
var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;
回答5:
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().
回答6:
You need to substitute the characters with URL entities. Some information here.
回答7:
I did below, it works fine.
const myQueryParamValue = "You&Me";
const ajaxUrl = "www.example.com/api?searchText="+encodeURIComponent(myQueryParamValue)
来源:https://stackoverflow.com/questions/2828211/how-to-include-special-characters-in-query-strings