Punycode — это способ приведения интернационализированных доменных имен, содержащих в себе unicode-символы (таких, как .рф) к виду, содержащему только символы ASCII, как того требует система DNS. Например, домен джино.рф в Punycode-представлении выглядит так: xn--d1aeguf.xn--p1ai.
Изначально DNS спроектирована таким образом, что доменное имя может состоять только из символов из таблицы ASCII, и домены, содержащие в себе символы, не вошедшие в эту таблицу, не были предусмотрены. Чтобы обойти это ограничение и обеспечить совместимость с уже существующим ПО, был разработан Punycode.
Внутри DNS и большинстве других программных систем интернационализированный домен «живет» именно в таком виде и преобразуется к привычному для нас представлению только на этапе вывода на экран пользователя. И наоборот, когда вы вводите имя такого домена в адресную строку браузера, оно преобразуется в Punycode и в дальнейшем используется только в таком виде.