Using “&” and “+” in Querystring

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?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

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

Method 2

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.

Method 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.

Method 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″,”&”);


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x