= Punycode
{c}
<Punycode> encodes a sequence of <Unicode> <code points> using a restricted basic-character alphabet. It preserves basic <ASCII> characters and represents the remaining <code points> by an adaptive generalized integer encoding. RFC3492 defines the <algorithm>; it is one component used by internationalized-domain-name protocols, rather than a complete definition of which names those protocols accept.<Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications by Adam M. Costello>[§§3–6, description and algorithm]{ref}
For example, the Punycode payload for `bücher` is `bcher-kva`. In the domain-name protocol, the ASCII-compatible label is written `xn--bcher-kva`; the prefix belongs to the protocol's label convention, not the basic Punycode payload. Encoding is reversible representation, not encryption, identity verification or protection against lookalike names.
Back to article page