使用“&"以及“+"在Querystring中

Using "&" and "+" in Querystring

本文关键字:quot Querystring 以及 使用 amp      更新时间:2023-09-26

In在Javascript中调用以下URL。

var par = "Participant.aspx?ID=" + Id + "&NAME=" + Name+ "&FIRSTNAME=" + Firstname;

有时Name或Firstname包含"与"或"加号"。

For Example:        Richard & Michael or Richard + Michael

在服务器端,我读取的查询字符串如下:

        Dim Name As String = Request.QueryString("NAME")
        Dim Firstname As String = Request.QueryString("FIRSTNAME")

我的问题是,如果查询字符串包含一个"加号",则该符号将转换为空格('');如果查询字符串含有一个"与",则"与"之后的所有内容都将被删除。

我试过几种类似的东西。Request.Form而不是Requeust.Querystring,我也尝试了Server.URLEncode。但两者都不合适。

URLEncode的问题是,如果Querystring在Name和"加号"之间包含空格,这些空格也会转换为"加号"。

你知道如何解决这个问题吗?

您可以将encodeURIComponent用于查询字符串值,然后将其设置为查询字符串

    var url = encodeURIComponent($("#<%=hdnPageQuery.ClientID%>").val());
    var title = encodeURIComponent(document.title);
    var redirectUrl = $("#<%=hdnPageTarget.ClientID%>").val();
    var outputUrl = redirectUrl + '?url=' + url + '&title=' + title;
    $('#ancSendToFriendLink').attr('href', outputUrl);
请记住,查询字符串的内容(名称和值)必须正确地进行URI编码。如果这行是用JavaScript写的,你会这样做:
var par = "Participant.aspx?ID=" + encodeURIComponent(Id) +
            "&NAME=" + encodeURIComponent(Name) +
            "&FIRSTNAME=" + encodeURIComponent(Firstname);

(同样,从技术上讲,名称也应该编码,但"ID"、"NAME"answers"FIRSTNAME"编码的内容完全相同,所以我没有在它们上使用encodeURIComponent。)

参见AntP关于加号和空格的评论:

"URLEncode的问题是,如果Querystring在Name和"加号"之间包含空格,这些空格也会转换为"加号"。"-这就是应该发生的情况。加号表示一个空格。编码的加号表示加号。

您可以使用预定义的UrlEncodeUrlDecode

UrlDecode和UrlEncode
希望这对您有所帮助。

嘿,还有另一种方法:

在将其传递给查询字符串之前,只需替换:

.替换("&","%26");

在另一页上,它自动将%26读取为&,但是它也不读作&,再次替换:

。替换("%26","&");