如何在查询字符串中包含特殊字符

时间:2010-05-13 15:50:37

标签: html url-rewriting

以下网址可以正常使用:

  

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

但是,如果我想在`param中添加一些特殊字符?,/,\,则URL变为:

  

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

  

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

哪个不行。我该如何解决这个问题?

7 个答案:

答案 0 :(得分:22)

您必须在网址中对特殊字符进行编码。请参阅:http://www.w3schools.com/tags/ref_urlencode.asp

答案 1 :(得分:7)

您需要对查询参数进行编码,然后再将它们组合成一个url。这里需要的功能是encodeURIComponent。例如,

您需要创建的网址是:

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

现在,假设?和/作为变量,你需要在放入url之前对它们进行编码。 所以让我们使用这个函数创建你的url(我期待两个查询参数):

 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"

此功能在基本JS中,并在所有浏览器中都受支持。

答案 2 :(得分:3)

在JavaScript中,您可以使用 encodeURI()功能。

ASP具有 Server.URLEncode()功能。

.NET中的HttpServerUtility.UrlEncode

答案 3 :(得分:2)

使用javascript:

以特殊字符传递QueryString值的简便方法
var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;

答案 4 :(得分:1)

您需要使用编码特殊字符,请参阅this页面以供参考。

如果您使用的是PHP,则可以使用名为urlencode()的函数。

答案 5 :(得分:0)

您需要使用URL实体替换字符。 Some information here.

答案 6 :(得分:0)

我在下面做了,工作正常。

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