Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 239
Varun Sharma Avatar asked Nov 18 '12 22:11

Varun Sharma


1 Answers

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=
like image 115
MikeSmithDev Avatar answered Oct 27 '22 01:10

MikeSmithDev