NAME¶
Net::IDN::Overwiew - Internationalized Domain Names for Applications (IDNA)
DESCRIPTION¶
The "Net::IDN::*" modules provide a framework for the handling of
Internationalized Domain Names for Applications (IDNA) in perl programmes.
This document provides an overview of the available modules in order to allow
you to choose the best module for the task at hand.
AVAILABLE MODULES¶
HIGH-LEVEL (USE THIS)
- Net::IDN::Encode
- provides a high-level interface for converting domain names (and for
convenience, email addresses).
Use this module if you just want to convert domain names and don't care
about how this is done internally.
Currently, this module uses Net::IDN::UTS46. However, this might change in
the future if another specification (e.g. a revision of IDNA2008) becomes
more appropriate.
The author aims for Net::IDN::Encode to always use the specification that
will provide the "least surprising" results.
STANDARD-SPECIFIC
These modules implement different versions of the the IDNA specifications. Use
one of these modules only if you require compatibility with a specific
incarnation of IDNA.
- Net::IDN::IDNA2003
- implements the orginal IDNA specification, released in 2003 (IDNA2003),
which is now obsolete.
IDNA2003 is defined in RFC 3490
<http://tools.ietf.org/rfc/3490> and related documents.
- Net::IDN::UTS46
- implements Unicode Technical Standard #46 (UTS #46
<http://unicode.org/reports/tr46/>), Unicode IDNA Compatibility
Processing. This specification supports all domain names allowed under
either IDNA2003 or IDNA2008.
ENCODING
- Net::IDN::Punycode
- performs the actual conversion between the ASCII and Unicode form of
strings. Punycode is defined in RFC 3492
<http://tools.ietf.org/rfc/3492> and related documents.
Usually, it is not a good idea to use this module directly. If you convert
domain labels (or other strings) without proper prepration, you may end up
with an ASCII encoding that is not interoperable or poses security issues
due to spoofing.
Even if you think that your domain names are valid and in already-mapped
format, you might be fooled by different Unicode normalization forms (for
example, some environments might automatically convert your data to NFD,
which breaks IDNA).
DEPRECATED/COMPATIBILITY
These modules are only maintained in order to not break applications that might
rely on them
- Encode::Punycode
- provides an Encode plugin for Punycode. As Punycode is not a
general-purpose encoding, there are limited applications.
- IDNA::Punycode
- has an API depending on global variables. Don't use this module.
DISTRIBUTIONS¶
- Net-IDN-Encode
- is the main distribution covering the most common cases for converting
domain names between ASCII and Unicode.
The author tries to keep the dependency chain as small as possible;
currently this distribution only depends on perl 5.8.5 and
Unicode::Normalize.
- Net-IDN-IDNA2003
- provides the Net::IDN::IDNA2003 module. This is separate because it has an
dependency on Unicode::Stringprep (through Net::IDN::Nameprep).
- Encode-Punycode
- IDNA-Punycode
- are separate because they are of limited use to the average user/perl
programmer.
AUTHOR¶
Claus Faerber <CFAERBER@cpan.org>