Encode a string so that it can be used safely in the "path segment" part of a URI.
Encode a string so that it can be used safely in the "path segment"
part of a URI. A path segment is defined in RFC 3986. In a URI such
as http://www.example.com/abc/def?a=1&b=2
both abc
and def
are path segments.
Path segment encoding differs from encoding for other parts of a URI. For example, the "&" character is permitted in a path segment, but has special meaning in query parameters. On the other hand, the "/" character cannot appear in a path segment, as it is the path delimiter, so it must be encoded as "%2F". These are just two examples of the differences between path segment and query string encoding; there are other differences too.
When encoding path segments the encodePathSegment
method should always
be used in preference to the java.net.URLEncoder.encode(String,String)
method. URLEncoder.encode
, despite its name, actually provides encoding
in the application/x-www-form-urlencoded
MIME format which is the encoding
used for form data in HTTP GET and POST requests. This encoding is suitable
for inclusion in the query part of a URI. But URLEncoder.encode
should not
be used for path segment encoding. (Also note that URLEncoder.encode
is
not quite spec compliant. For example, it percent-encodes the ~
character when
really it should leave it as unencoded.)
The string to encode.
The name of the encoding that the string s
is encoded with.
The string s
will be converted to octets (bytes) using this character encoding.
An encoded string in the US-ASCII character set.
Provides support for correctly encoding pieces of URIs.
http://www.ietf.org/rfc/rfc3986.txt