Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.apache.axis.types
Class URI  view URI download URI.java

java.lang.Object
  extended byorg.apache.axis.types.URI
All Implemented Interfaces:
java.io.Serializable

public class URI
extends java.lang.Object
implements java.io.Serializable

Axis Note: This class was 'borrowed' from Xerces 2: org.apache.xerces.util.URI.java, version 1.22

A class to represent a Uniform Resource Identifier (URI). This class is designed to handle the parsing of URIs and provide access to the various components (scheme, host, port, userinfo, path, query string and fragment) that may constitute a URI.

Parsing of a URI specification is done according to the URI syntax described in RFC 2396, and amended by RFC 2732.

Every absolute URI consists of a scheme, followed by a colon (':'), followed by a scheme-specific part. For URIs that follow the "generic URI" syntax, the scheme-specific part begins with two slashes ("//") and may be followed by an authority segment (comprised of user information, host, and port), path segment, query segment and fragment. Note that RFC 2396 no longer specifies the use of the parameters segment and excludes the "user:password" syntax as part of the authority segment. If "user:password" appears in a URI, the entire user/password string is stored as userinfo.

For URIs that do not follow the "generic URI" syntax (e.g. mailto), the entire scheme-specific part is treated as the "path" portion of the URI.

Note that, unlike the java.net.URL class, this class does not provide any built-in network access functionality nor does it provide any scheme-specific functionality (for example, it does not know a default port for a specific scheme). Rather, it only knows the grammar and basic set of operations that can be applied to a URI.


Nested Class Summary
static class URI.MalformedURIException
          MalformedURIExceptions are thrown in the process of building a URI or setting fields on a URI when an operation would result in an invalid URI specification.
 
Field Summary
private static int ASCII_ALPHA_CHARACTERS
          ASCII letter characters
private static int ASCII_DIGIT_CHARACTERS
          ASCII digit characters
private static int ASCII_HEX_CHARACTERS
          ASCII hex characters
private static boolean DEBUG
           
private static byte[] fgLookupTable
           
private  java.lang.String m_fragment
          If specified, stores the fragment for this URI; otherwise null
private  java.lang.String m_host
          If specified, stores the host for this URI; otherwise null
private  java.lang.String m_path
          If specified, stores the path for this URI; otherwise null
private  int m_port
          If specified, stores the port for this URI; otherwise -1
private  java.lang.String m_queryString
          If specified, stores the query string for this URI; otherwise null.
private  java.lang.String m_regAuthority
          If specified, stores the registry based authority for this URI; otherwise -1
private  java.lang.String m_scheme
          Stores the scheme (usually the protocol) for this URI.
private  java.lang.String m_userinfo
          If specified, stores the userinfo for this URI; otherwise null
private static int MARK_CHARACTERS
          URI punctuation mark characters: -_.!~*'() - these, combined with alphanumerics, constitute the "unreserved" characters
private static int MASK_ALPHA_NUMERIC
          Mask for alpha-numeric characters
private static int MASK_PATH_CHARACTER
          Mask for path characters
private static int MASK_SCHEME_CHARACTER
          Mask for scheme characters
private static int MASK_UNRESERVED_MASK
          Mask for unreserved characters
private static int MASK_URI_CHARACTER
          Mask for URI allowable characters except for %
private static int MASK_USERINFO_CHARACTER
          Mask for userinfo characters
private static int PATH_CHARACTERS
          Path characters
private static int RESERVED_CHARACTERS
          reserved characters ;/?:@&=+$,[]
private static int SCHEME_CHARACTERS
          scheme can be composed of alphanumerics and these characters: +-.
(package private) static long serialVersionUID
          Serialization version.
private static int USERINFO_CHARACTERS
          userinfo can be composed of unreserved, escaped and these characters: ;:&=+$,
 
Constructor Summary
URI()
          Construct a new and uninitialized URI.
URI(java.lang.String p_uriSpec)
          Construct a new URI from a URI specification string.
URI(java.lang.String p_uriSpec, boolean allowNonAbsoluteURI)
          Construct a new URI from a URI specification string.
URI(java.lang.String p_scheme, java.lang.String p_schemeSpecificPart)
          Construct a new URI that does not follow the generic URI syntax.
URI(java.lang.String p_scheme, java.lang.String p_userinfo, java.lang.String p_host, int p_port, java.lang.String p_path, java.lang.String p_queryString, java.lang.String p_fragment)
          Construct a new URI that follows the generic URI syntax from its component parts.
URI(java.lang.String p_scheme, java.lang.String p_host, java.lang.String p_path, java.lang.String p_queryString, java.lang.String p_fragment)
          Construct a new URI that follows the generic URI syntax from its component parts.
URI(URI p_other)
          Construct a new URI from another URI.
URI(URI p_base, java.lang.String p_uriSpec)
          Construct a new URI from a base URI and a URI specification string.
URI(URI p_base, java.lang.String p_uriSpec, boolean allowNonAbsoluteURI)
          Construct a new URI from a base URI and a URI specification string.
 
Method Summary
 void absolutize(URI p_base)
          Absolutize URI with given base URI.
 void appendPath(java.lang.String p_addToPath)
          Append to the end of the path of this URI.
 boolean equals(java.lang.Object p_test)
          Determines if the passed-in Object is equivalent to this URI.
 java.lang.String getFragment()
          Get the fragment for this URI.
 java.lang.String getHost()
          Get the host for this URI.
 java.lang.String getPath()
          Get the path for this URI.
 java.lang.String getPath(boolean p_includeQueryString, boolean p_includeFragment)
          Get the path for this URI (optionally with the query string and fragment).
 int getPort()
          Get the port for this URI.
 java.lang.String getQueryString()
          Get the query string for this URI.
 java.lang.String getRegBasedAuthority()
          Get the registry based authority for this URI.
 java.lang.String getScheme()
          Get the scheme for this URI.
 java.lang.String getSchemeSpecificPart()
          Get the scheme-specific part for this URI (everything following the scheme and the first colon).
 java.lang.String getUserinfo()
          Get the userinfo for this URI.
 int hashCode()
          Returns a hash-code value for this URI.
private  void initialize(URI p_other)
          Initialize all fields of this URI from another URI.
private  void initialize(URI p_base, java.lang.String p_uriSpec)
          Initializes this URI from a base URI and a URI specification string.
private  void initialize(URI p_base, java.lang.String p_uriSpec, boolean allowNonAbsoluteURI)
          Initializes this URI from a base URI and a URI specification string.
private  boolean initializeAuthority(java.lang.String p_uriSpec)
          Initialize the authority (either server or registry based) for this URI from a URI string spec.
private  void initializePath(java.lang.String p_uriSpec, int p_nStartIndex)
          Initialize the path for this URI from a URI string spec.
private  void initializeScheme(java.lang.String p_uriSpec)
          Initialize the scheme for this URI from a URI string spec.
 boolean isAbsoluteURI()
          Returns whether this URI represents an absolute URI.
private static boolean isAlpha(char p_char)
          Determine whether a char is an alphabetic character: a-z or A-Z
private static boolean isAlphanum(char p_char)
          Determine whether a char is an alphanumeric: 0-9, a-z or A-Z
static boolean isConformantSchemeName(java.lang.String p_scheme)
          Determine whether a scheme conforms to the rules for a scheme name.
private static boolean isDigit(char p_char)
          Determine whether a char is a digit.
 boolean isGenericURI()
          Get the indicator as to whether this URI uses the "generic URI" syntax.
private static boolean isHex(char p_char)
          Determine whether a character is a hexadecimal character.
private static boolean isPathCharacter(char p_char)
          Determine whether a char is a path character.
private static boolean isReservedCharacter(char p_char)
          Determine whether a character is a reserved character: ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '[', or ']'
private static boolean isSchemeCharacter(char p_char)
          Determine whether a char is a scheme character.
private static boolean isUnreservedCharacter(char p_char)
          Determine whether a char is an unreserved character.
private static boolean isURICharacter(char p_char)
          Determine whether a char is a URI character (reserved or unreserved, not including '%' for escaped octets).
private static boolean isURIString(java.lang.String p_uric)
          Determine whether a given string contains only URI characters (also called "uric" in RFC 2396).
private static boolean isUserinfoCharacter(char p_char)
          Determine whether a char is a userinfo character.
private  boolean isValidRegistryBasedAuthority(java.lang.String authority)
          Determines whether the given string is a registry based authority.
private  boolean isValidServerBasedAuthority(java.lang.String host, int port, java.lang.String userinfo)
          Determines whether the components host, port, and user info are valid as a server authority.
static boolean isWellFormedAddress(java.lang.String address)
          Determine whether a string is syntactically capable of representing a valid IPv4 address, IPv6 reference or the domain name of a network host.
static boolean isWellFormedIPv4Address(java.lang.String address)
          Determines whether a string is an IPv4 address as defined by RFC 2373, and under the further constraint that it must be a 32-bit address.
static boolean isWellFormedIPv6Reference(java.lang.String address)
          Determines whether a string is an IPv6 reference as defined by RFC 2732, where IPv6address is defined in RFC 2373.
private static int scanHexSequence(java.lang.String address, int index, int end, int[] counter)
          Helper method for isWellFormedIPv6Reference which scans the hex sequences of an IPv6 address.
 void setFragment(java.lang.String p_fragment)
          Set the fragment for this URI.
 void setHost(java.lang.String p_host)
          Set the host for this URI.
 void setPath(java.lang.String p_path)
          Set the path for this URI.
 void setPort(int p_port)
          Set the port for this URI.
 void setQueryString(java.lang.String p_queryString)
          Set the query string for this URI.
 void setRegBasedAuthority(java.lang.String authority)
          Sets the registry based authority for this URI.
 void setScheme(java.lang.String p_scheme)
          Set the scheme for this URI.
 void setUserinfo(java.lang.String p_userinfo)
          Set the userinfo for this URI.
 java.lang.String toString()
          Get the URI as a string specification.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

static final long serialVersionUID
Serialization version.

See Also:
Constant Field Values

fgLookupTable

private static final byte[] fgLookupTable

RESERVED_CHARACTERS

private static final int RESERVED_CHARACTERS
reserved characters ;/?:@&=+$,[]

See Also:
Constant Field Values

MARK_CHARACTERS

private static final int MARK_CHARACTERS
URI punctuation mark characters: -_.!~*'() - these, combined with alphanumerics, constitute the "unreserved" characters

See Also:
Constant Field Values

SCHEME_CHARACTERS

private static final int SCHEME_CHARACTERS
scheme can be composed of alphanumerics and these characters: +-.

See Also:
Constant Field Values

USERINFO_CHARACTERS

private static final int USERINFO_CHARACTERS
userinfo can be composed of unreserved, escaped and these characters: ;:&=+$,

See Also:
Constant Field Values

ASCII_ALPHA_CHARACTERS

private static final int ASCII_ALPHA_CHARACTERS
ASCII letter characters

See Also:
Constant Field Values

ASCII_DIGIT_CHARACTERS

private static final int ASCII_DIGIT_CHARACTERS
ASCII digit characters

See Also:
Constant Field Values

ASCII_HEX_CHARACTERS

private static final int ASCII_HEX_CHARACTERS
ASCII hex characters

See Also:
Constant Field Values

PATH_CHARACTERS

private static final int PATH_CHARACTERS
Path characters

See Also:
Constant Field Values

MASK_ALPHA_NUMERIC

private static final int MASK_ALPHA_NUMERIC
Mask for alpha-numeric characters

See Also:
Constant Field Values

MASK_UNRESERVED_MASK

private static final int MASK_UNRESERVED_MASK
Mask for unreserved characters

See Also:
Constant Field Values

MASK_URI_CHARACTER

private static final int MASK_URI_CHARACTER
Mask for URI allowable characters except for %

See Also:
Constant Field Values

MASK_SCHEME_CHARACTER

private static final int MASK_SCHEME_CHARACTER
Mask for scheme characters

See Also:
Constant Field Values

MASK_USERINFO_CHARACTER

private static final int MASK_USERINFO_CHARACTER
Mask for userinfo characters

See Also:
Constant Field Values

MASK_PATH_CHARACTER

private static final int MASK_PATH_CHARACTER
Mask for path characters

See Also:
Constant Field Values

m_scheme

private java.lang.String m_scheme
Stores the scheme (usually the protocol) for this URI.


m_userinfo

private java.lang.String m_userinfo
If specified, stores the userinfo for this URI; otherwise null


m_host

private java.lang.String m_host
If specified, stores the host for this URI; otherwise null


m_port

private int m_port
If specified, stores the port for this URI; otherwise -1


m_regAuthority

private java.lang.String m_regAuthority
If specified, stores the registry based authority for this URI; otherwise -1


m_path

private java.lang.String m_path
If specified, stores the path for this URI; otherwise null


m_queryString

private java.lang.String m_queryString
If specified, stores the query string for this URI; otherwise null.


m_fragment

private java.lang.String m_fragment
If specified, stores the fragment for this URI; otherwise null


DEBUG

private static boolean DEBUG
Constructor Detail

URI

public URI()
Construct a new and uninitialized URI.


URI

public URI(URI p_other)
Construct a new URI from another URI. All fields for this URI are set equal to the fields of the URI passed in.


URI

public URI(java.lang.String p_uriSpec)
    throws URI.MalformedURIException
Construct a new URI from a URI specification string. If the specification follows the "generic URI" syntax, (two slashes following the first colon), the specification will be parsed accordingly - setting the scheme, userinfo, host,port, path, query string and fragment fields as necessary. If the specification does not follow the "generic URI" syntax, the specification is parsed into a scheme and scheme-specific part (stored as the path) only.


URI

public URI(java.lang.String p_uriSpec,
           boolean allowNonAbsoluteURI)
    throws URI.MalformedURIException
Construct a new URI from a URI specification string. If the specification follows the "generic URI" syntax, (two slashes following the first colon), the specification will be parsed accordingly - setting the scheme, userinfo, host,port, path, query string and fragment fields as necessary. If the specification does not follow the "generic URI" syntax, the specification is parsed into a scheme and scheme-specific part (stored as the path) only. Construct a relative URI if boolean is assigned to "true" and p_uriSpec is not valid absolute URI, instead of throwing an exception.


URI

public URI(URI p_base,
           java.lang.String p_uriSpec)
    throws URI.MalformedURIException
Construct a new URI from a base URI and a URI specification string. The URI specification string may be a relative URI.


URI

public URI(URI p_base,
           java.lang.String p_uriSpec,
           boolean allowNonAbsoluteURI)
    throws URI.MalformedURIException
Construct a new URI from a base URI and a URI specification string. The URI specification string may be a relative URI. Construct a relative URI if boolean is assigned to "true" and p_uriSpec is not valid absolute URI and p_base is null instead of throwing an exception.


URI

public URI(java.lang.String p_scheme,
           java.lang.String p_schemeSpecificPart)
    throws URI.MalformedURIException
Construct a new URI that does not follow the generic URI syntax. Only the scheme and scheme-specific part (stored as the path) are initialized.


URI

public URI(java.lang.String p_scheme,
           java.lang.String p_host,
           java.lang.String p_path,
           java.lang.String p_queryString,
           java.lang.String p_fragment)
    throws URI.MalformedURIException
Construct a new URI that follows the generic URI syntax from its component parts. Each component is validated for syntax and some basic semantic checks are performed as well. See the individual setter methods for specifics.


URI

public URI(java.lang.String p_scheme,
           java.lang.String p_userinfo,
           java.lang.String p_host,
           int p_port,
           java.lang.String p_path,
           java.lang.String p_queryString,
           java.lang.String p_fragment)
    throws URI.MalformedURIException
Construct a new URI that follows the generic URI syntax from its component parts. Each component is validated for syntax and some basic semantic checks are performed as well. See the individual setter methods for specifics.

Method Detail

initialize

private void initialize(URI p_other)
Initialize all fields of this URI from another URI.


initialize

private void initialize(URI p_base,
                        java.lang.String p_uriSpec,
                        boolean allowNonAbsoluteURI)
                 throws URI.MalformedURIException
Initializes this URI from a base URI and a URI specification string. See RFC 2396 Section 4 and Appendix B for specifications on parsing the URI and Section 5 for specifications on resolving relative URIs and relative paths.


initialize

private void initialize(URI p_base,
                        java.lang.String p_uriSpec)
                 throws URI.MalformedURIException
Initializes this URI from a base URI and a URI specification string. See RFC 2396 Section 4 and Appendix B for specifications on parsing the URI and Section 5 for specifications on resolving relative URIs and relative paths.


absolutize

public void absolutize(URI p_base)
Absolutize URI with given base URI.


initializeScheme

private void initializeScheme(java.lang.String p_uriSpec)
                       throws URI.MalformedURIException
Initialize the scheme for this URI from a URI string spec.


initializeAuthority

private boolean initializeAuthority(java.lang.String p_uriSpec)
Initialize the authority (either server or registry based) for this URI from a URI string spec.


isValidServerBasedAuthority

private boolean isValidServerBasedAuthority(java.lang.String host,
                                            int port,
                                            java.lang.String userinfo)
Determines whether the components host, port, and user info are valid as a server authority.


isValidRegistryBasedAuthority

private boolean isValidRegistryBasedAuthority(java.lang.String authority)
Determines whether the given string is a registry based authority.


initializePath

private void initializePath(java.lang.String p_uriSpec,
                            int p_nStartIndex)
                     throws URI.MalformedURIException
Initialize the path for this URI from a URI string spec.


getScheme

public java.lang.String getScheme()
Get the scheme for this URI.


getSchemeSpecificPart

public java.lang.String getSchemeSpecificPart()
Get the scheme-specific part for this URI (everything following the scheme and the first colon). See RFC 2396 Section 5.2 for spec.


getUserinfo

public java.lang.String getUserinfo()
Get the userinfo for this URI.


getHost

public java.lang.String getHost()
Get the host for this URI.


getPort

public int getPort()
Get the port for this URI.


getRegBasedAuthority

public java.lang.String getRegBasedAuthority()
Get the registry based authority for this URI.


getPath

public java.lang.String getPath(boolean p_includeQueryString,
                                boolean p_includeFragment)
Get the path for this URI (optionally with the query string and fragment).


getPath

public java.lang.String getPath()
Get the path for this URI. Note that the value returned is the path only and does not include the query string or fragment.


getQueryString

public java.lang.String getQueryString()
Get the query string for this URI.


getFragment

public java.lang.String getFragment()
Get the fragment for this URI.


setScheme

public void setScheme(java.lang.String p_scheme)
               throws URI.MalformedURIException
Set the scheme for this URI. The scheme is converted to lowercase before it is set.


setUserinfo

public void setUserinfo(java.lang.String p_userinfo)
                 throws URI.MalformedURIException
Set the userinfo for this URI. If a non-null value is passed in and the host value is null, then an exception is thrown.


setHost

public void setHost(java.lang.String p_host)
             throws URI.MalformedURIException

Set the host for this URI. If null is passed in, the userinfo field is also set to null and the port is set to -1.

Note: This method overwrites registry based authority if it previously existed in this URI.


setPort

public void setPort(int p_port)
             throws URI.MalformedURIException
Set the port for this URI. -1 is used to indicate that the port is not specified, otherwise valid port numbers are between 0 and 65535. If a valid port number is passed in and the host field is null, an exception is thrown.


setRegBasedAuthority

public void setRegBasedAuthority(java.lang.String authority)
                          throws URI.MalformedURIException

Sets the registry based authority for this URI.

Note: This method overwrites server based authority if it previously existed in this URI.


setPath

public void setPath(java.lang.String p_path)
             throws URI.MalformedURIException
Set the path for this URI. If the supplied path is null, then the query string and fragment are set to null as well. If the supplied path includes a query string and/or fragment, these fields will be parsed and set as well. Note that, for URIs following the "generic URI" syntax, the path specified should start with a slash. For URIs that do not follow the generic URI syntax, this method sets the scheme-specific part.


appendPath

public void appendPath(java.lang.String p_addToPath)
                throws URI.MalformedURIException
Append to the end of the path of this URI. If the current path does not end in a slash and the path to be appended does not begin with a slash, a slash will be appended to the current path before the new segment is added. Also, if the current path ends in a slash and the new segment begins with a slash, the extra slash will be removed before the new segment is appended.


setQueryString

public void setQueryString(java.lang.String p_queryString)
                    throws URI.MalformedURIException
Set the query string for this URI. A non-null value is valid only if this is an URI conforming to the generic URI syntax and the path value is not null.


setFragment

public void setFragment(java.lang.String p_fragment)
                 throws URI.MalformedURIException
Set the fragment for this URI. A non-null value is valid only if this is a URI conforming to the generic URI syntax and the path value is not null.


equals

public boolean equals(java.lang.Object p_test)
Determines if the passed-in Object is equivalent to this URI.


hashCode

public int hashCode()
Returns a hash-code value for this URI. The hash code is based upon all of the URI's components, and satisfies the general contract of the Object.hashCode 55 method.


toString

public java.lang.String toString()
Get the URI as a string specification. See RFC 2396 Section 5.2.


isGenericURI

public boolean isGenericURI()
Get the indicator as to whether this URI uses the "generic URI" syntax.


isAbsoluteURI

public boolean isAbsoluteURI()
Returns whether this URI represents an absolute URI.


isConformantSchemeName

public static boolean isConformantSchemeName(java.lang.String p_scheme)
Determine whether a scheme conforms to the rules for a scheme name. A scheme is conformant if it starts with an alphanumeric, and contains only alphanumerics, '+','-' and '.'.


isWellFormedAddress

public static boolean isWellFormedAddress(java.lang.String address)
Determine whether a string is syntactically capable of representing a valid IPv4 address, IPv6 reference or the domain name of a network host. A valid IPv4 address consists of four decimal digit groups separated by a '.'. Each group must consist of one to three digits. See RFC 2732 Section 3, and RFC 2373 Section 2.2, for the definition of IPv6 references. A hostname consists of domain labels (each of which must begin and end with an alphanumeric but may contain '-') separated & by a '.'. See RFC 2396 Section 3.2.2.


isWellFormedIPv4Address

public static boolean isWellFormedIPv4Address(java.lang.String address)

Determines whether a string is an IPv4 address as defined by RFC 2373, and under the further constraint that it must be a 32-bit address. Though not expressed in the grammar, in order to satisfy the 32-bit address constraint, each segment of the address cannot be greater than 255 (8 bits of information).

IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT


isWellFormedIPv6Reference

public static boolean isWellFormedIPv6Reference(java.lang.String address)

Determines whether a string is an IPv6 reference as defined by RFC 2732, where IPv6address is defined in RFC 2373. The IPv6 address is parsed according to Section 2.2 of RFC 2373, with the additional constraint that the address be composed of 128 bits of information.

IPv6reference = "[" IPv6address "]"

Note: The BNF expressed in RFC 2373 Appendix B does not accurately describe section 2.2, and was in fact removed from RFC 3513, the successor of RFC 2373.


scanHexSequence

private static int scanHexSequence(java.lang.String address,
                                   int index,
                                   int end,
                                   int[] counter)
Helper method for isWellFormedIPv6Reference which scans the hex sequences of an IPv6 address. It returns the index of the next character to scan in the address, or -1 if the string cannot match a valid IPv6 address.


isDigit

private static boolean isDigit(char p_char)
Determine whether a char is a digit.


isHex

private static boolean isHex(char p_char)
Determine whether a character is a hexadecimal character.


isAlpha

private static boolean isAlpha(char p_char)
Determine whether a char is an alphabetic character: a-z or A-Z


isAlphanum

private static boolean isAlphanum(char p_char)
Determine whether a char is an alphanumeric: 0-9, a-z or A-Z


isReservedCharacter

private static boolean isReservedCharacter(char p_char)
Determine whether a character is a reserved character: ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '[', or ']'


isUnreservedCharacter

private static boolean isUnreservedCharacter(char p_char)
Determine whether a char is an unreserved character.


isURICharacter

private static boolean isURICharacter(char p_char)
Determine whether a char is a URI character (reserved or unreserved, not including '%' for escaped octets).


isSchemeCharacter

private static boolean isSchemeCharacter(char p_char)
Determine whether a char is a scheme character.


isUserinfoCharacter

private static boolean isUserinfoCharacter(char p_char)
Determine whether a char is a userinfo character.


isPathCharacter

private static boolean isPathCharacter(char p_char)
Determine whether a char is a path character.


isURIString

private static boolean isURIString(java.lang.String p_uric)
Determine whether a given string contains only URI characters (also called "uric" in RFC 2396). uric consist of all reserved characters, unreserved characters and escaped characters.