The encoding algorithm is rather complex. Because the length of a domain name is strictly limited, one of its goals is to make the encoded string as small as possible. Another goal is to encode all languages with roughly the same efficiency, and not punish a language merely because its characters are mapped to high Unicode code points. To that end, it is most efficient when encoding a string whose characters lie close together in the Unicode character set. The absolute values of the code points have little effect.
When used in a domain name, the Unicode name is encoded in Punycode, and then appended to the ASCII string "
- RFC 3492: Punycode