Using “&” and “+” in Querystring

删除回忆录丶 提交于 2021-02-05 09:41:41

问题


In call the following URL in Javascript.

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

Sometimes the Name or the Firstname contains an "ampersand" or an "plus" sign.

For Example:        Richard & Michael or Richard + Michael

On the server side, I read the query string like this:

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

My problem is that if the query string contains a "plus" sign, then the sign is converted to space ( ' ' ) and if the query string contains a "ampersand", then everything after the "ampersand" is deleted.

I have tried several things like. Request.Form instead of Reqeust.Querystring and i also tried Server.URLEncode. But both not working suitable.

With URLEncode is the problem that if the Querystring contains spaces between the Name and the "plus" sign, the spaces also get converted to "plus" signs.

Do you have an idea how to solve this?


回答1:


Remember that the contents of the query string (both the names and values) must be correctly URI-encoded. If that line is in JavaScript, you'd do that like this:

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

(Technically, again, the names should be encoded too, but "ID", "NAME", and "FIRSTNAME" encode to exactly the same thing, so I didn't use encodeURIComponent on them.)

See AntP's comment re the plus signs and spaces:

"With URLEncode is the problem that if the Querystring contains spaces between the Name and the "plus" sign, the spaces also get converted to "plus" signs." - that is what should happen. A plus sign denotes a space. An encoded plus sign denotes a plus sign.




回答2:


You can use encodeURIComponent for the query string value and then set it as query string

    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);



回答3:


You can use predefined UrlEncode and UrlDecode methods. These methods will help you out to pass special characters in query strings. Have a look at these examples.

UrlDecode and UrlEncode
hope this helps you.




回答4:


hey there is another way:

before passing it to query string just replace:

.Replace("&","%26");

on another page it automatically read %26 as &, but then also it not read as &, just again replace:

.Replace("%26","&");



来源:https://stackoverflow.com/questions/26883621/using-and-in-querystring

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!