Robert Urban

NAME

IDNA::Punycode - encodes Unicode string in Punycode

SYNOPSIS

  use IDNA::Punycode;
  idn_prefix('xn--');
  $punycode = encode_punycode($unicode);
  $unicode  = decode_punycode($punycode);

DESCRIPTION

IDNA::Punycode is a module to encode / decode Unicode strings into Punycode, an efficient encoding of Unicode for use with IDNA.

This module requires Perl 5.6.0 or over to handle UTF8 flagged Unicode strings.

FUNCTIONS

This module exports following functions by default.

encode_punycode
  $punycode = encode_punycode($unicode);

takes Unicode string (UTF8-flagged variable) and returns Punycode encoding for it.

decode_punycode
  $unicode = decode_punycode($punycode)

takes Punycode encoding and returns original Unicode string.

idn_prefix
  idn_prefix($prefix);

causes encode_punycode() to add $prefix to ACE-string after conversion. As a side-effect decode_punycode() will only consider strings beginning with $prefix as punycode representations.

According to RFC 3490 the ACE prefix "xn--" had been chosen as the standard. Thus, "xn--" is also the default ACE prefix. For compatibility I'm leaving idn_prefix() in the module. Use idn_prefix(undef) to get the old behaviour.

These functions throws exceptionsn on failure. You can catch 'em via eval.

AUTHORS

Tatsuhiko Miyagawa <miyagawa@bulknews.net> is the original author and wrote almost all the code.

Robert Urban <urban@UNIX-Beratung.de> added idn_prefix().

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

http://www.ietf.org/internet-drafts/draft-ietf-idn-punycode-01.txt

Encode::Punycode