Packages

o

play.utils

UriEncoding

object UriEncoding

Provides support for correctly encoding pieces of URIs.

Source
UriEncoding.scala
See also

http://www.ietf.org/rfc/rfc3986.txt

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. UriEncoding
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. def decodePath(s: String, outputCharset: Charset): String

    Decode the path of a URI.

    Decode the path of a URI. Each path segment will be decoded using the same rules as decodePathSegment.

    s

    The string to decode. Must use the US-ASCII character set.

    outputCharset

    The charset of the encoding that the output should be encoded with. The output string will be converted from octets (bytes) using this character encoding.

    returns

    A decoded string in the outputCharset character set.

    Exceptions thrown

    play.utils.InvalidUriEncodingException If the input is not a valid encoded path.

  2. def decodePath(s: String, outputCharset: String): String

    Decode the path of a URI.

    Decode the path of a URI. Each path segment will be decoded using the same rules as decodePathSegment. No normalization is performed: leading, trailing and duplicated slashes, if present are left as they are and if absent remain absent; dot-segments (".." and ".") are ignored.

    Encoded slash characters are will appear as slashes in the output, thus "a/b" will be indistinguishable from "a%2Fb".

    s

    The string to decode. Must use the US-ASCII character set.

    outputCharset

    The name of the encoding that the output should be encoded with. The output string will be converted from octets (bytes) using this character encoding.

    returns

    A decoded string in the outputCharset character set.

    Exceptions thrown

    play.utils.InvalidUriEncodingException If the input is not a valid encoded path.

  3. def decodePathSegment(s: String, outputCharset: Charset): String

    Decode a string according to the rules for the "path segment" part of a URI.

    Decode a string according to the rules for the "path segment" part of a URI.

    s

    The string to decode. Must use the US-ASCII character set.

    outputCharset

    The charset of the encoding that the output should be encoded with. The output string will be converted from octets (bytes) using this character encoding.

    returns

    A decoded string in the outputCharset character set.

    Exceptions thrown

    play.utils.InvalidUriEncodingException If the input is not a valid encoded path segment.

  4. def decodePathSegment(s: String, outputCharset: String): String

    Decode a string according to the rules for the "path segment" part of a URI.

    Decode a string according to the rules for 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 decoding path segments the decodePathSegment method should always be used in preference to the java.net.URLDecoder.decode method. URLDecoder.decode, despite its name, actually decodes the application/x-www-form-urlencoded MIME format which is the encoding used for form data in HTTP GET and POST requests. This format is suitable for inclusion in the query part of a URI. But URLDecoder.decoder should not be used for path segment encoding or decoding.

    s

    The string to decode. Must use the US-ASCII character set.

    outputCharset

    The name of the encoding that the output should be encoded with. The output string will be converted from octets (bytes) using this character encoding.

    returns

    A decoded string in the outputCharset character set.

    Exceptions thrown

    play.utils.InvalidUriEncodingException If the input is not a valid encoded path segment.

  5. def encodePathSegment(s: String, inputCharset: Charset): String

    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.

    s

    The string to encode.

    inputCharset

    The charset of the encoding that the string s is encoded with.

    returns

    An encoded string in the US-ASCII character set.

  6. def encodePathSegment(s: String, inputCharset: String): String

    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 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.)

    s

    The string to encode.

    inputCharset

    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.

    returns

    An encoded string in the US-ASCII character set.