HttpUtility.UrlEncode Does not encode spaces properly
Posted on January 14th, 2005
I realized a while back that HttpUtility.UrlEncode does not properly encode spaces for URLs. It encodes a space as a “+“ which most browsers do not interpret as a space for the obvious reason that + is actually a valid character for a filename. So to work around the bug we wrote the following:
| public static string URLEncode(string str) { return System.Web.HttpUtility.UrlEncode( str ).Replace(”+”,”%20″); } |
It’s interesting to note that HttpUtility.UrlPathEncode does properly encode the space but fails to encode other critical charcters like & and ?.
Filed under .NET |
2 Responses to “HttpUtility.UrlEncode Does not encode spaces properly”
-
Anonymous Says:
February 16th, 2005 at 3:15 pmIn my small experiments I have seen the following;
string e = “";
string e1 = HttpUtility.HtmlEncode(e);
string e2 = HttpUtility.UrlEncode(e);
string e3 = HttpUtility.UrlPathEncode(e);
string e4 = HttpUtility.HtmlAttributeEncode(e);and then you get the following results;
e1 = “<script lang=’javascript’ />”
e2 = “%3cscript+lang%3d’javascript’+%2f%3e”
e3 = “"
e4 = “"which means you might have to employ to encode;
string e5 = HttpUtility.UrlEncode(HttpUtility.UrlPathEncode(a));
and eventually
string d5 = HttpUtility.UrlDecode(HttpUtility.HtmlDecode(e5))
which gives
e5 = “%3cscript%2520lang%3d’javascript’%2520%2f%3e”
d5 = “"to get the “best” result… (I doubt it too..)
Sorry for the cryptic writing…
-
dan Says:
February 24th, 2006 at 8:17 pmactually, the string “d5″ results in this, which is a lot different than above:
“"
...which takes us back to the start...

