47

I know there are different methods in the System.Web namespace for decoding html entities (such as "%20" for space). I'm building a Winforms application however, but needs to deal with html encoded strings. Basically I have the iTunes Library XML file and need to decode the URLs in there to check the files.

Is this possible without the System.Web namespace?

4
  • Why would you not use the System.Web namespace? Commented Apr 2, 2009 at 21:21
  • 4
    This is relevant if you want to use the client only subset of the framework, +1. Commented Nov 28, 2009 at 20:36
  • @Cookey see bizon's answer, definitely the best one. Commented May 24, 2012 at 5:55
  • I suspect the chosen answer is out of date and should be changed Commented Aug 20, 2014 at 21:02

7 Answers 7

97

Developers who need to use System.Web.HttpUtility in their client apps and had to reference System.Web.dll and therefore target NET4 full (System.Web.dll is in Full) , can now target the NET4 Client Profile by using the new System.Net.WebUtility class which is in System.dll (System.dll is in NET4 Client Profile). System.Net.WebUtility includes HtmlEncode and HtmlDecode. Url encoding can be accomplished using the System.Uri class (also in System.dll).

From http://blogs.msdn.com/b/jgoldb/archive/2010/04/12/what-s-new-in-net-framework-4-client-profile-rtm.aspx

Sign up to request clarification or add additional context in comments.

Comments

28

You can use System.Net.WebUtility.HtmlDecode:

Converts a string that has been HTML-encoded for HTTP transmission into a decoded string.

Comments

24

Just because you're writing a Windows Forms app doesn't stop you from using System.Web. Just add a reference to System.Web.dll.

4 Comments

I have tripped on this before. I forgot the reference, thought a "using" would do. Thanks!
The issue with that is that you can't use the .NET 3.5 Client profile with your .NET app so your XP users can avoid the 150mb download and go for the smaller 28mb one. Best to avoid the System.Web namespace if you can.
I second that, It´s silly a subset of these methods couldn't be provided in a seperate assembly available for the client profile installation.. i find myself quite often needing them in simple client apps.
@Almund: Check my answer. They did it.
8

See this article if you're still curious how to do this without System.Web. It offers a solution for URI decoding (which is really what you're decoding, not HTML entities which are something like "&emdash;" )

Comments

0

To use the methods that are in the .NET framework you must use the System.Web namespace to get the HtmlDecode method.

Yes, you could write your own method to do it, but that wouldn't make a lot of sense.

Just add the reference to system.web.

Comments

0

mybe it can help in winforms :

System.Uri.EscapeUriString(plainText);

1 Comment

Do you mind expanding on your code instead of posting a one liner?
-1

You can use HttpUtility.UrlDecode or HttpUtility.HtmlDecode

1 Comment

Since the question was how to do this Without the System.Web assembly I´m afraid this isn't much help..

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.