如何在查询字符串中包含特殊字符?
Posted
技术标签:
【中文标题】如何在查询字符串中包含特殊字符?【英文标题】:How can I include special characters in query strings? 【发布时间】:2011-02-19 04:04:44 【问题描述】:URL http://localhost/mysite/mypage?param=123
工作正常。但是,如果我想在param
中添加一些特殊字符,例如?
、/
、\
,那么 URL 将变为http://localhost/mysite/mypage?param=a=?&b=/
或http://localhost/mysite/mypage?param=http://www.example.com/page2?a=\&b=...
,这将不起作用。我该如何解决这个问题?
【问题讨论】:
【参考方案1】:您需要使用编码特殊字符,参考this页面。
如果您使用的是 php,有一个函数可以执行此操作,称为 urlencode()。
【讨论】:
【参考方案2】:您必须对 URL 中的特殊字符进行编码。见:http://www.w3schools.com/tags/ref_urlencode.asp
【讨论】:
如果你有特殊字符比如“/?:@&=+$#”那么你需要使用这个扩展函数:w3schools.com/jsref/jsref_encodeuricomponent.asp 更有效的参考是 MDN,见下文...***.com/a/35377890/147618【参考方案3】:您需要将字符替换为 URL 实体。 Some information here.
【讨论】:
【参考方案4】:在 javascript 中,您可以使用 encodeURI()
函数。
ASP 有Server.URLEncode()
函数。
您可以在 .NET 中使用 HttpServerUtility.UrlEncode
。
【讨论】:
在.Net中你想使用HttpUtility.UrlEncode
msdn.microsoft.com/en-us/library/…【参考方案5】:
使用 javascript 传递带有特殊字符的 QueryString 值的简单方法:
var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;
【讨论】:
【参考方案6】:您需要对查询参数进行编码,然后再将它们组合成一个 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中,所有浏览器都支持。
【讨论】:
【参考方案7】:我在下面做了,效果很好。
const myQueryParamValue = "You&Me";
const ajaxUrl = "www.example.com/api?searchText="+encodeURIComponent(myQueryParamValue)
【讨论】:
以上是关于如何在查询字符串中包含特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用正则表达式匹配 Ruby 中包含特殊字符的重复模式?