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

Ken*_*hou 23 html url-rewriting

以下URL工作正常:

HTTP://本地主机/ mysite的/我的空间PARAM = 123

但是,如果我想在`param like?,/,\中放置一些特殊字符,那么URL将变为:

HTTP://本地主机/ mysite的/我的空间PARAM = A =&B = /

要么

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

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

Ste*_* P. 22

您必须在URL中编码特殊字符.请参阅:http://www.w3schools.com/tags/ref_urlencode.asp

  • 更有效的参考是MDN,见下文... /sf/answers/2476452331/ (2认同)

Har*_*kaa 8

使用 javascript 传递带有特殊字符的 QueryString 值的简单方法:

var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;
Run Code Online (Sandbox Code Playgroud)


Kop*_*lyf 8

您需要在将查询参数组合以形成网址之前对其进行编码.这里需要的函数是encodeURIComponent.例如,

您需要创建的网址是:

http://localhost/mysite/mypage?param=a=?&b=/
Run Code Online (Sandbox Code Playgroud)

现在,假设?和/作为变量,你需要在放入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"
Run Code Online (Sandbox Code Playgroud)

此函数在基本JS中,并在所有浏览器中受支持.


Vis*_*eth 5

在 JavaScript 中,您可以使用该encodeURI()函数。

ASP有这个Server.URLEncode()功能。

您可以HttpServerUtility.UrlEncode在.NET 中使用。