Что такое Punycode?

Punycode – это конвертация символов в кодировке Unicode в формат, поддерживаемый инфраструктурой DNS. Алгоритм преобразования описан в стандарте RFC 3492.

Идея использования в доменных именах символов национальных алфавитов, как одного из важных элементов интернационализации Интернета, возникла еще в 1970-х годах, когда Интернет еще только разрабатывался. Однако, в связи с тем, что соответствующая технология не была разработана, символы допустимые для регистрации доменных имен в системе доменных имен – DNS были ограничены символами в кодировке ASCII, а именно буквами латинского алфавита (a-z), цифрами (0-9) и символом дефиса. Такое подмножество символов ASCII обычно обозначается «LDH» или «код LDH» (от аббревиатуры, образованной словами: «буква», «цифра», «дефис»). 

Количество пользователей, языки которых основаны на алфавитах, отличающихся от латинского постоянно растет. Это означает, что все больше пользователей сталкиваются с проблемами, связанными с распознаванием и вводом символов ASCII. Кроме того доменные имена, составленные из символов национальных алфавитов имеют очевидные преимущества при выходе компаний на локальные рынки или ориентации на неанглоязычных пользователей Интернета, а также для проведения локальных рекламных акций и кампаний. Корпорация ICANN уделяет большое внимание развитию доменов, которые содержат символы национальных алфавитов или IDN-доменов (от Internationalized Domain Names).

В 2003 году для решения вопроса с поддержкой национальных алфавитов для доменных имен были подготовлены специальные стандарты, которые обозначаются как IDNA – Internationalizing Domain Names in Applications (Интернационализованные доменные имена для приложений). Этими стандартами описывается технология применения в доменных именах символов, которые не входят в таблицу ASCII. Одним из стандартов – RFC 3492 описывается специальное преобразование символов – Punycode, позволяющее конвертировать набор символов в кодировке Unicode (включает все национальные алфавиты) в набор символов, поддерживаемый существующей DNS.

Чтобы IDN-домен после преобразования нельзя было спутать с обычным доменом, все IDN-домены начинаются со специального префикса «XN--».

Например, IDN-домен, записанный с использованием кириллицы как «САЙТ.COM», пройдя Punycode-конвертацию будет иметь вид «XN--80ASWG.COM», так как сочетание символов «САЙТ» будет конвертировано в «80ASWG».

Для пользователей Рунета, которые первыми получили возможность регистрации и использования в своих проектах IDN-доменов в кириллической зоне .РФ, Punycode-преобразование применяется не только к имени домена, но и к зоне (домен верхнего уровня – .РФ). Псевдонимом, прописанным в DNS, для домена .РФ является сочетание символов «XN--P1AI». Таким образом, кириллический домен «МойСайт.РФ» после Punycode-преобразования будет выглядеть «XN--80ARBJKTJ.XN--P1AI».

Для поддержки IDN-доменов достаточно, чтобы браузер пользователя поддерживал Punycode-преобразование. На данный момент последние версии всех популярных браузеров поддерживают Punycode. В том случае, если браузер не поддерживает Punycode, а также, если необходимо получить имя домена в его «реальном представлении», можно воспользоваться специальными web-сервисами выполняющими Punycode-преобразование введенных пользователем доменных имен.