UrlEncode vs UrlPathEncode

By Peter Bromberg

The HttpUtility class offers several utility methods to encode Urls. Here are the differences.

The UrlEncode method can be used to encode the entire URL, including query-string values. If characters such as blanks and punctuation are passed in an HTTP stream, they might be misinterpreted at the receiving end. URL encoding converts characters that are not allowed in a URL into character-entity equivalents; URL decoding reverses the encoding. For example, when the characters < and > are embedded in a block of text to be transmitted in a URL, they are encoded as %3c and %3e.

You can encode a URL using with the UrlEncode method or the UrlPathEncode method. However, the methods return different results. The UrlEncode method converts each space character to a plus character (+). The UrlPathEncode method converts each space character into the string "%20", which represents a space in hexadecimal notation. Use the UrlPathEncode method when you encode the path portion of a URL in order to guarantee a consistent decoded URL, regardless of which platform or browser performs the decoding.

There are actually more differences than just the treatment of spaces, although the documentation doesn't really make this clear. UrlEncode will encode characters like "?" and "&" which are ignored by UrlPathEncode.  Also UrlPathEncode doesn't encode anything after the first occurence of "?". It assumes the rest is the query string, and assumes the query string is already encoded.

UrlEncode vs UrlPathEncode  (3961 Views)