{
    "mode": "perldoc",
    "parameter": "Net::IDN::Standards",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AIDN%3A%3AStandards/json",
    "generated": "2026-06-12T21:13:58Z",
    "sections": {
        "NAME": {
            "content": "Net::IDN::Standards -- Internationalized Domain Names for Applications (IDNA)\n",
            "subsections": []
        },
        "INTRODUCTION": {
            "content": "Historically, domain names and host names were restricted to a limited repertoire of ASCII\ncharacters, i.e. letters, digits and the hyphen (i.e. \"/[A-Z0-9-]/i\"). Words and names from\nlanguages that require additional characters (such as diacritics or special characters) or other\nscripts could not be used.\n\nInternationalized Domain Names (IDNs) extend the character repertoire for domain names from\nASCII to Unicode while maintaining backwards compatibility with software that only expects and\nhandles ASCII characters.\n\nIn order to do so, Unicode domain names are converted to ASCII using an ASCII-compatible\nencoding (ACE) called Punycode. On the wire, converted domain names start with \"xn--\", followed\nby the ASCII encoding of the Unicode string. The Unicode version is typically only shown in\napplications presenting the domain to the user (hence Internationalized Domain Names for\nApplications, IDNA). Internationalized Resource Identifiers (IRIs), the Unicode version of URLs,\nmay also include domain names in their Unicode form.\n\nThe IDNA specifications, however, do not only cover the actual Punycode conversion but also\ninclude extensive rules for preparation (mapping and/or validation) of input strings. They\ntypically define two functions, \"ToASCII\" and \"ToUnicode\", which prepare and convert a domain\nname to the ACE version or the Unicode version.\n",
            "subsections": []
        },
        "DIFFERENT STANDARDS": {
            "content": "\"The nice thing about standards is that you have so many to\nchoose from.\"\n-- Andrew S. Tanenbaum\n\nWhile the actual Punycode conversion is stable, there are different specifications regarding\nmapping and/or validation (preparation):\n\nIDNA2003\nIDNA2003, which is defined in RFC 3490 (<http://tools.ietf.org/html/rfc3490>) and related\ndocuments, was the original specification for the internationalization of domain names.\n\nHowever, some issues were subsequently identified with IDNA2003: The specification was tied to\nUnicode 3.2 and therefore did not allow characters added in newer versions of Unicode (without\nupdating the specifications).\n\nFurthermore, a few characters were mapped to other characters or deleted although they would\ncarry meaning in some languages (i.e. 'ß' and 'ς' were mapped to 'ss' and 'σ'; ZWJ and ZWNJ were\nalways mapped to nothing, although some scripts like Arabic require them for correct display).\n\nIDNA2008\nIDNA2008, which is defined in RFC 5890 (<http://tools.ietf.org/html/rfc5890>) and related\ndocuments, resolves the issues found in IDNA2003.\n\nThis was done by allowing some characters that would either be mapped to other characters,\nmapped to zero and/or cause the preparation to fail. The new domain names would not be\naccessible by IDNA2003 implementations, of course.\n\nHowever, IDNA2008 also disallowed a large number of characters that had been allowed in IDNA2003\n(mostly symbols). An implementation of IDNA2008 would therefore no longer be able to access\ndomain names such as \"√.com\", which had been registered under IDNA2003.\n\nUTS #46\nUnicode Technical Standard #46 (UTS #46, <http://unicode.org/reports/tr46/>) solves this problem\nby allowing domain names that are valid in either IDNA2003 or IDNA2008.\n\nThis makes UTS #46 the perfect fit for domain lookup (be liberal in what you accept) but\nunsuitable for validating domain names prior to registration (be conservative in what you send).\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "Claus Färber <CFAERBER@cpan.org>\n",
            "subsections": []
        }
    },
    "summary": "Net::IDN::Standards -- Internationalized Domain Names for Applications (IDNA)",
    "flags": [],
    "examples": [],
    "see_also": []
}