This topic has not yet been rated - Rate this topic

HttpUtility.UrlPathEncode Method

Encodes the path portion of a URL string for reliable HTTP transmission from the Web server to a client.

Namespace:  System.Web
Assembly:  System.Web (in System.Web.dll)
public static string UrlPathEncode(
	string str
)

Parameters

str
Type: System.String
The text to URL-encode.

Return Value

Type: System.String
The URL-encoded text.

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.

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
HttpUtility.UrlPathEncode

The UrlPathEncode method performs the following steps:

- Applies the encoding logic of the UrlPathEncode method to only the path part of the URL (which excludes the query string). The method assumes that the URL is encoded as a UTF-8 string.

- Encodes non-spaces so that only a subset of the first 128 ASCII characters is used in the resulting encoded string. Any characters at Unicode value 128 and greater or 32 and less are URL-encoded.

- Encodes spaces as %20.

When using the UrlPathEncode method, the query-string values are not encoded. Therefore, any values included past the question mark (?) in the string, will not be encoded. If you need to pass a URL as a query-string, use the UrlEncode method.

For more information about encoding, see Character Encoding in the .NET Framework.
Does this method escape any other characters other than space?

I would have expected HttpUtility.UrlPathEncode("foo%bar") to return "foo%25bar" (the correctly escaped path) but it does not - it returns the input string ("foo%bar").

Does this method only escape spaces - if so please make this more explicit in the docs and, if this is the case, it would be nice to give a pointer as to why this is so and what methods to use to actually Url path encode such a string.

(answering my own question: yes this method only escapes spaces - I checked in the source. I still think it would be nicer if this was made much more explicit).