Plus sign in query string

C#Javascriptasp.net

C# Problem Overview


I have a webapp created using C# and asp.net. I placed a parameter value in the querystring with a plus(+) sign. But the plus sign disappear.

How can I include the plus sign(+) in the query string without disappearing?

Please advise.

Thanks.

Edit: added code with UrlEncode

string str = Server.UrlEncode(Requery.QueryString["new"]);

C# Solutions


Solution 1 - C#

+ sign has a semantic meaning in the query string. It is used to represent a space. Another character that has semantic importance in the query string is & which is used to separate the various var=value pairs in the query string.

Most server side scripts would decode the query parameters before using them, so that a + gets properly converted to a space. Now, if you want a literal + to be present in the query string, you need to specify %2B instead.

+ sign in the query string is URL-decoded to a space. %2B in the query string is URL-decoded to a + sign.

See the difference between

http://www.google.com/search?q=foo+bar

and

http://www.google.com/search?q=foo%2Bbar

In the above examples, Google's server script is URL-decoding the query parameters and then using them to do the search.

URL-encoding is nothing but % sign followed by the hex-code of the special character. For example, we know that the hex code of A is 0x41 (decimal: 65). Try this:

http://www.google.com/search?q=%41

Hope this makes URL-encoding clear.

So, if you want the + sign to be preserved when a JavaScript is fetching a URL with + signs in its query parameters and a server side script would process the query parameters after URL-decoding it, you should URL-encode the query parameters in the URL before using issuing the HTTP get request so that all + signs are converted to %2B's when the request reaches the server side script. Now when the server side script URL-decodes the query string, all %2B's gets converted back to + signs which is what you want.

See https://stackoverflow.com/q/332872/303363 to learn how to URL-encode the parameters using JavaScript. Short answer from the discussion there:

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);

Solution 2 - C#

You should URLEncode your query string values to make sure any special characters are not lost.

Solution 3 - C#

Look at HTML URL Encoding Reference

You need to Encode the + sign - It's value should be %2B

Solution 4 - C#

I alter my previous statement so no one gets confused!

Create your url using the Server.UrlEncode. e.g.

string myUrl = "http://myurl?param1="  + Server.UrlEncode("my+param+1");

Solution 5 - C#

For the solution, I have applied:

Step 1:Use Server.UrlEncode method for encoding the URL parameter. Response.Redirect("YourURL?parameter=Server.UrlEncode(parameterValue.ToString().Trim()");

step 2: on another side, you get a string with a plus(+) sign. var parameter = Request.QueryString["parameterValue"].ToString().Trim();

This is the result: %2beH8 --> +eH8

Solution 6 - C#

Other simple way is, Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1) assuming that my URL is, http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==

Solution 7 - C#

before send you parameter, you need check if the parameter contains plus sign, if have you need replace to one flag, for example: the parameter is: klasjdlkasd+djid3223 can you replace: klasjdlkasdFLAGdjid3223

and when you go convert, you need replace angain

klasjdlkasd+djid3223

Solution 8 - C#

Try this, it works for me:

Request.QueryString["new"].Trim();

Solution 9 - C#

The solution is to ALWAYS include .Replace(" ", "+") when you request querystring

string s = Request.QueryString["id"].Trim().Replace(" ", "+");

source: http://www.webmasterworld.com/forum47/3238.htm

Solution 10 - C#

Add this line in Decrypt Funcation:

strText = strText.Replace(" ", "+");

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondomlaoView Question on Stackoverflow
Solution 1 - C#Susam PalView Answer on Stackoverflow
Solution 2 - C#DoctorMickView Answer on Stackoverflow
Solution 3 - C#Morten AndersonView Answer on Stackoverflow
Solution 4 - C#gredView Answer on Stackoverflow
Solution 5 - C#Mehul PitrodaView Answer on Stackoverflow
Solution 6 - C#SharKView Answer on Stackoverflow
Solution 7 - C#Michael RodriguesView Answer on Stackoverflow
Solution 8 - C#kobaltView Answer on Stackoverflow
Solution 9 - C#Dilhan JayathilakeView Answer on Stackoverflow
Solution 10 - C#Vijay MungaraView Answer on Stackoverflow