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

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.UrlEncodemsdn.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)

【讨论】:

以上是关于如何在查询字符串中包含特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章

PHP:如何在 mail() 中包含特殊字符?

如何使用正则表达式匹配 Ruby 中包含特殊字符的重复模式?

如何正确处理Shell 函数传人参数中包含的特殊字符

Oracle字符串中包含数字特殊符号的排序

如何在 React 和 JSX 中导入名称中包含特殊字符的 JS 文件?

如果 Json 变量在 WCF 中包含空格或任何特殊字符,如何获取 Json 值