typeof (unichar2)-decodes any "unreserved" characters (or
characters in unescape_extra) in part, and typeof (
unichar2)-encodes any non-ASCII characters, spaces, and non-printing characters in part.
"Unreserved" characters are those that are not allowed to be used for punctuation according to the URI spec. For example, letters are unreserved, so uri_normalize will turn http://example.com/foo/b%61r into http://example.com/foo/bar , which is guaranteed to mean the same thing. However, "/" is "reserved", so http://example.com/foo%2Fbar would not be changed, because it might mean something different to the server.
In the past, this would return null if part contained invalid percent-encoding, but now it just ignores the
problem (as URI already did).
| part |
a URI part |
| unescape_extra |
reserved characters to unescape (or |
|
the normalized URI part |