The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Unicode::ICU::IDN - Internationalized Domain Names (IDNs) via ICU

SYNOPSIS

    use utf8;

    my $idn = Unicode::ICU::IDN->new();

    # This takes a *character* string!
    my $ascii = $idn->name2ascii('épée.com');

    # This outputs a character string.
    my $unicode = $idn->name2unicode('xn--kxawhkp.gr');

DESCRIPTION

This module exposes simple IDN (i.e., Internationalized Domain Name) ASCII/Unicode (punycode) converters.

ERROR HANDLING: INVALID IDNs

In addition to the usual Unicode::ICU::X::ICU errors, this module also throws Unicode::ICU::X::BadIDN errors if a bad IDN is detected. If you want to tolerate bad IDNs you’ll need to convert invalid sequences yourself beforehand.

COMPATIBILITY

This require ICU 4.6 or later.

SEE ALSO

Net::LibIDN2

Net::IDN::UTS46

CONSTANTS

Constructor options

See below.

%ERROR

Correlates IDN error names with error numbers. These derive from ICU’s UIDNA_ERROR_* constants.

STATIC FUNCTIONS

@labels = get_error_labels( $ERROR_NUMBER )

A convenient function that returns a list of names (e.g., DISALLOWED) from %ERROR that $ERROR_NUMBER indicates. In scalar context this returns the number of such names that would be returned in list context.

METHODS

$obj = CLASS->new( [$OPTIONS] )

Instantiates this class. $OPTIONS, if given, is a numeric mask of this module’s UIDNA_* constants: UIDNA_DEFAULT, etc. (See IDN’s API documentation for others.)