Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unescape an escaped url in c#

I have urls which is escaped in this form:

   http://www.someurl.com/profile.php?mode=register&agreed=true

I want to convert it to unescaped form

   http://www.someurl.com/profile.php?mode=register&agreed=true

is this the same thing as escapped html?

how do i do this?

thanks

like image 873
Smith Avatar asked Jun 29 '11 10:06

Smith


People also ask

How do I get hash character out of URL?

Replace the hash with %23 . # is a valid URI character, but it starts the hash fragment, so you need to encode it in the query string. Compare encodeURIComponent('#') .

What is a %20 in a URL?

A space is assigned number 32, which is 20 in hexadecimal. When you see “%20,” it represents a space in an encoded URL, for example, http://www.example.com/products%20and%20services.html.

Does need to be URL escaped?

when entered in a url need to be escaped, otherwise they may cause unpredictable situations. Use cases: User has submitted values in a form that may be in a string format and need to be passed in, such as URL fields.


2 Answers

& is an HTML entity and is used when text is encoded into HTML because you have to "escape" the & that has a special meaning in HTML. Apparently, this escaping mechanism was used on the URL presumably because it is used in some HTML for instance in a link. I'm not sure why you want to decode it because the browser will do the proper decoding when the link is clicked. But anyway, to revert it you can use HttpUtility.HtmlDecode in the System.Web namespace:

var encoded = "http://www.someurl.com/profile.php?mode=register&agreed=true";
var decoded = HttpUtility.HtmlDecode(encoded);

The value of decoded is:

http://www.someurl.com/profile.php?mode=register&agreed=true

Another form of encoding/decoding used is URL encoding. This is used to be able to include special characters in parts of the URL. For instance the characters /, ? and & have a special meaning in a URL. If you need to include any of these characters in a say a query parameter you will have to URL encode the parameter to not mess up the URL. Here is an example of an URL where URL escaping has been used:

http://www.someurl.com/profile.php?company=Barnes+%26+Noble

The company name Barnes & Noble was encoded as Barnes+%26+Noble. If the & hadn't been escaped the URL would have contained not one but two query parameters because & is used as a delimiter between query parameters.

like image 131
Martin Liversage Avatar answered Sep 29 '22 11:09

Martin Liversage


not sure why but decode from @Martin's answer doesn't work in my case (filename in my case is "%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82%D0%B8%D0%BD%D0%BE%D0%B2%D1%81%D1%82%D1%8C%20%D0%BF%D1%80%D0%BE%D0%B4%D0%B0%D0%B6%202020%20(1)-8.xml").

For me works method - https://docs.microsoft.com/en-us/dotnet/api/system.uri.unescape?view=netcore-3.1 .

Be aware that this is obsolete.

like image 44
Ustin Avatar answered Sep 29 '22 11:09

Ustin