I'm working with a page where I have a url like:
/directory/company/manufacturer
Using some re-write rules this gets re-written
testing with /directory/company/dunkin%26donuts/
Some manufacturers have an ampersand in their name. So I thought I could just replace the ampersand with %26
. However, when I debug the code and hover over Request.QueryString
it shows me {qq=company&manf=dunkin&donuts&cond=}
and Request.QueryString["manf"]
gives me 'dunkin'
If I use %24
($) instead of ampersand, hovering over Request.QueryString
gives me {qs=company&manf=dunkin%24donuts&cond=}
and Request.QueryString["manf"]
gives me 'dunkin$donuts'
I don't understand the different behavior here. Why does it seem as though the url-encoded value for an ampersand gets decoded before you actually request a specific key, but another url-encoded character, like a dollar sign, only gets decoded after you actually request that specific key?
Is this a recent change? I always thought Request.QueryString[key]
returned the actual text without decoding it first. Or does it have something to do with url re-writes?
It is a usual task in web development, and this is generally done while making a GET request to the API with the query params. The query params must also be encoded in the URL string, where the server will decode this. Many browsers automatically encode and decode the URL and the response string.
A Query String Collection is used to retrieve the variable values in the HTTP query string. If we want to transfer a large amount of data then we can't use the Request. QueryString. Query Strings are also generated by form submission or can be used by a user typing a query into the address bar of the browsers.
The QueryString collection is used to retrieve the variable values in the HTTP query string. The line above generates a variable named txt with the value "this is a query string test". Query strings are also generated by form submission, or by a user typing a query into the address bar of the browser.
To retrieve the query string value, use Request object's QueryString property.
ASP.NET automatically calls UrlDecode()
when you access a property by key index (i.e. (Request.QueryString["key"]
).
If you want it encoded, just do:
HttpUtility.UrlEncode(Request.QueryString["key"]);
In terms of the ampersand specifically, that is a special case character because it is already used as a query string delimeter. URL Encoding and decoding an ampersand should always give you &
for that very reason.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With