i'm trying to encode an url with the code below;
var encodedUrl = HttpUtility.UrlEncode("http://www.example.com");
var decodedUrl = HttpUtility.UrlDecode("http%3A%2F%2Fwww%2Eexample%2Ecom%2F");
I'm working with the google webmaster tools api and this api expects an URL as shown in the decodedUrl variable above. Every single character is encoded there.
When i use the httputility encode function i get the following result;
http%3a%2f%2fwww.example.com
How can i use the encoding variable in such a way that every character in the url is encoded?
2 Answers 2
I'm pretty sure that HtmlUtility and AntiXss (another MS tool for encoding urls) aren't going to help here. A "." in a url is considered valid and so doesn't need to be encoded.
I think you're going to have to post-process your encoded string to further encode other characters that are not valid within teh google webmaster tools API.
i.e. do something like this...
var encodedUrl = HttpUtility.UrlEncode("http://www.example.com")
.Replace(".", "%2E");
... assuming that "." is the only character you're having problems with.
-
Wrote an extension method to replace the characters and it works like a charm. Thanks!Rob– Rob2010年10月08日 14:03:40 +00:00Commented Oct 8, 2010 at 14:03
-
Cool. an extension method will certainly tidy the code up nicely.Martin Peck– Martin Peck2010年10月08日 15:49:51 +00:00Commented Oct 8, 2010 at 15:49
-
Totally agree! It definately cleanes up the code and it's easy maintainable. We use it a lot over here. Lots of projects have a Toolbox included with helpers and extensions methodes which can used overallRob– Rob2010年10月22日 13:48:43 +00:00Commented Oct 22, 2010 at 13:48
The period is not a reserved character in a URL, so it won't be encoded. See this question and answer for an elegant solution.
-
+1 for the good comment, i'll keep this in mind for final deploymentRob– Rob2010年10月08日 14:04:02 +00:00Commented Oct 8, 2010 at 14:04