Varun Sharma
Varun Sharma

Reputation: 2759

asp .net query string encoding and decoding

I type the following url into my web browser and press enter.

http://localhost/website.aspx?paymentID=6++7d6CZRKY%3D&language=English

Now in my code when I do HttpContext.Current.Request.QueryString["paymentID"],

I get 6 7d6CZRKY=

but when I do HttpContext.Current.Request.QueryString.ToString() I see the following:

paymentID=6++7d6CZRKY%3D&language=English

The thing I want to extract the actual payment id that the user typed in the web browser URL. I am not worried as to whether the url is encoded or not. Because I know there is a weird thing going on here %3D and + sign at the same time ! But I do need the actual + sign. Somehow it gets decoded to space when I do HttpContext.Current.Request.QueryString["paymentID"].

I just want to extract the actual payment ID that the user typed. What's the best way to do it?

Thank you.

Upvotes: 8

Views: 26847

Answers (3)

Basheer AL-MOMANI
Basheer AL-MOMANI

Reputation: 15327

I sent an Arabic text in my query string

Arabic text in my query string

and when I resieved this string it was Encoded enter image description here

after Server.UrlDecode

 departmentName = Server.UrlDecode(departmentName);

it back again to arabic enter image description here

I hope this help you

Upvotes: 2

MikeSmithDev
MikeSmithDev

Reputation: 15797

You'll need to encode the URL first, using URLEncode(). + in URL equals a space so needs to be encoded to %2b.

string paymentId = Server.UrlEncode("6++7d6CZRKY=");
// paymentId = 6%2b%2b7d6CZRKY%3d

And now

string result = Request.QueryString["paymentId"].ToString();
//result = 6++7d6CZRKY=

However

string paymentId = Server.UrlEncode("6  7d6CZRKY=");
//paymentId looks like you want it, but the + is a space -- 6++7d6CZRKY%3d

string result = Request.QueryString["paymentId"].ToString();
//result = 6 7d6CZRKY=

Upvotes: 9

Francis Gagnon
Francis Gagnon

Reputation: 3675

There is some info on this here: Plus sign in query string.

But I suppose you could also use a regular expression to get your parameter out of the query string. Something like this:

string queryString = HttpContext.Current.Request.QueryString.ToString();
string paramPaymentID = Regex.Match(queryString, "paymentID=([^&]+)").Groups[1].Value;

Upvotes: 2

Related Questions