HttpUtility.UrlPathEncode Method
Encodes the path portion of a URL string for reliable HTTP transmission from the Web server to a client.
Assembly: System.Web (in System.Web.dll)
Parameters
- str
- Type: System.String
The text to URL-encode.
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.
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.
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.
- 8/17/2011
- Erik Reitan
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).
- 2/22/2011
- chrisfewtrell
- 2/22/2011
- chrisfewtrell