Home About Norid Web search
Domain name registration Complaints and conflicts Policy for the .no domain Look up domains
Whois database Top level domains worldwide
Statistics and analysis FAQ Glossary Publications

Technical information about Norid's ACE solution

Introduction

This page presents a more technical description of the functionality and background of the Norid ACE conversion tool, plus some information about other IDN libraries and tools available on the net.

References

  1. GNU IDN library (libidn) The Open Source IDN package

  2. RFC3490 Internationalizing Domain Names in Applications (IDNA)
  3. RFC 3491 Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)
  4. RFC 3492 Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)

  5. All Norwegian under .no Description of the .no Policy, including the upcoming new IDN Policy
  6. The ACE Conversion tool offered by Norid

Description

Libidn is implemented according to the RFC's above. Libidn offers a huge amount of various IDN functions to a programmer.
For IDNA/ACE conversion purposes, a dedicated set of specialized IDNA functions are offered.

Norid's ACE conversion tool is written entirely in perl. Internally it mainly uses two of the IDNA functions from libidn:

  • The "ToASCII" operation is mapped to a call to the libidn "idna_to_ascii_8z()" function.
  • The "ToUnicode" operation is mapped to a call to the "idna_to_unicode_8z8z()" function.

Libidn offers general functions which complies the the RFC's. To enforce the local .no Domain Name Policy, the ACE Conversion tool also uses some additional perl functions developed by Norid.

From version 0.4.0, libidn also offer support to check for restricted TLD character sets. Support for '.no' and '.fr' is an integral part of the distribution, whilst character set tables for some other TLDs can be downloaded from http://tldchk.berlios.de and compiled into libidn as needed.

Net::LibIDN were publish on CPAN in January 2005 and provides the necessary perl bindings for libidn.

Why Unicode/UTF-8 and not some ISO-8859-xx?

Norid's ACE conversion tool offers its service to the user through a Unicode/UTF-8 coded web page. Why have we chosen UTF-8?

To understand that, we need to study the obvious solution; why not just choose the ISO-8859 character set that covers the 23 necessary IDN characters? A good link with detailed information on ISO-8859 characters sets is The ISO 8859 family. If we compare the characters in the various ISO-8859 character tables with the 23 required ones, we find that no single table contains them all. Reading Note X confirms that ISO-8859 cannot be used, since the required Sami characters are not covered by any single ISO-8859 character set.

So, the conclusion was simple, to support all new IDN characters for .no we had to choose the general Unicode/UTF-8 to be able to represent them all.

You will also meet that conclusion if you want to apply for a .no IDN Domain Name. If the Domain Name contains only the IDN characters "æøå", you can send the application E-mail coded in either ISO-8859-1 or UTF-8.
However, if you want to apply for a .no IDN Domain Name containing some of the Sami IDN characters, you need to send the application E-mail coded in UTF-8.

Some alternative IDN/ACE tools around

If you need to build your own IDN/ACE tool, a number of libraries based on different programming languages can be found on the net.

Libidn is worth a try if you run on a *nix platform. When you build and install libidn, you also get a command line 'idn' program for free. The 'idn' program can be used to perform general IDNA/ACE conversions. For example:

  • 'echo "blåbærsyltetøy.no" | idn -a --usestd3asciirules --quiet'   converts this IDN Domain name to the corresponding ACE-version 'xn--blbrsyltety-y8ao3x.no'
  • 'echo "xn--blbrsyltety-y8ao3x.no" | idn -u --quiet'   converts back to the corresponding IDN Domain Name 'blåbærsyltetøy.no'.

Libidn functions as a web-service:

    If you find this a bit tedious, or you run on Windows or some other platforms not supported by libidn, or you just don't want to (or know how to) install libidn, you can still access all the 'idn' functionality as a web-service at Try GNU Libidn. The "IDNA ToASCII" operation performs the "ToASCII" ('idn -a') operation. For proper Domain Name checking, remember to also check the 'UseSTD3ASCIIRules' option.
    The "IDNA ToUnicode" operation performs the "ToUnicode" ('idn -u') operation.


Various other IDN/IDNA/ACE related links:

Last modified 6 March 2006
UNINETT Norid AS   •   NO-7465 TRONDHEIM   •   Phone +47 07355   •   Fax +47 73 55 79 99   •   info@norid.no