Download the JDK
Search the Tutorials
Hide the TOC
Trail: Internationalization
Lesson: Internationalization of Network Resources
Internationalization of Network Resources
Internationalized Domain Name
Internationalized Resource Identifier
Home Page > Internationalization > Internationalization of Network Resources
Internationalized Resource Identifier

> Internationalized Resource Identifier (IRI) like IDN may contain Unicode characters, while Uniform Resource Identifier (URI) is limited to ASCII symbols only.

> According to RFC 3987 IRIs are meant to replace URIs in identifying resources for protocols, formats, and software components that use a UCS-based character repertoire.

> At first sight, you may consider that this task must been decided with the same means as for IDN. But there is not so exactly. Let's view a resource identifier structure:

> You may notice that it has several components.

> The authority component of a URI parses according to the following syntax

>         [user-info@]host[:port]

> where the characters @ and : stand for themselves. The host component can be an IP-literal, an IPv4address, or just a name.

> In a case, where a host is a domain name the IDN approach, i.e. the mapping, could be applied.

> But generally the URI structure is more complicated. Applications can use URI-reference syntax to make reference to a URI, instead of always using above generic syntax rule. A URI-reference is either a URI or a relative reference. If a URI-reference doesn't specifies a scheme, it is said to be a relative reference. Usually, a relative reference expresses a URI reference relative to the name space of another URI.

> Nevertheless, the instances the `java.net.URI` class can represent IRIs whenever they contain non ASCII characters.

> This class was enhanced by the following methods to perform the operations and conversions according to RFC 3987:

> - `toASCIIString()` - converts an IRI to a URI and returns its content as a US-ASCII string.
> - `toString()` - returns the content of this URI as a string in its original Unicode form.
> - `toIRIString()`Converts this URI to an IRI and returns its content as a string.

> As regards the following code:

>          URI uri = new URI("http://清华大学.cn/");
>          HttpURLConnection conn = (HttpURLConnection)
>                       uri.toURL().openConnection();
>          conn.getResponseCode();

> Unfortunately, we can not perform this now, it is planned for the next release of Java™ SE.

Previous page: Internationalized Domain Name
Next page: End of Trail