Punycode Конвертер

Конвертация кириллических и других IDN-доменов в Punycode (ACE) и обратно

Примеры

президент.рф → xn--d1abbgf6aiiy.xn--p1ai
münchen.de → xn--mnchen-3ya.de
例え.jp → xn--r8jz45g.jp

Как перевести кириллический домен в Punycode

Конвертер переводит интернационализированное доменное имя (IDN) — например, пример.рф — в ASCII-форму с префиксом xn--, которую понимают DNS, веб-серверы и удостоверяющие центры, а также в обратную сторону. Преобразование выполняется прямо в браузере встроенными средствами по стандарту URL — введённые домены никуда не отправляются.

Punycode нужен каждому, кто работает с доменами на кириллице: при настройке DNS-записей и server_name в nginx, выпуске SSL-сертификата, разборе логов и проверке подозрительных ссылок, где за привычными буквами может скрываться домен на другом алфавите.

Как пользоваться конвертером

  1. 1Выберите направление: «Unicode → Punycode», чтобы получить ASCII-форму, или «Punycode → Unicode» для обратного преобразования.
  2. 2Введите только доменное имя — без https://, пути и параметров, например пример.рф или shop.пример.рф. Регистр не важен: заглавные буквы будут приведены к строчным.
  3. 3Нажмите «Конвертировать». Каждая часть домена с не-ASCII-символами кодируется отдельно и получает префикс xn--, а латинские части остаются без изменений.
  4. 4Скопируйте результат кнопкой рядом с ним. Кнопка со стрелками между режимами меняет направление и переносит результат в поле ввода.

Что такое Punycode и IDN

Система доменных имён исторически работает только с латинскими буквами, цифрами и дефисом. Чтобы использовать в доменах кириллицу, иероглифы и буквы с диакритикой, придумали стандарт IDNA: имя на любом языке хранится в DNS в ASCII-форме, а браузер показывает пользователю привычный вариант.

Для перевода используется алгоритм Punycode (RFC 3492), а к результату добавляется префикс xn--, по которому программы узнают закодированную часть. Кодируется каждая часть домена между точками отдельно: shop.пример.рф превращается в shop.xn--e1afmkfd.xn--p1ai. Перед кодированием имя нормализуется — в частности, заглавные буквы приводятся к строчным.

Примеры доменов в Unicode и Punycode
ДоменPunycode
пример.рфxn--e1afmkfd.xn--p1ai
президент.рфxn--d1abbgf6aiiy.xn--p1ai
пример.русxn--e1afmkfd.xn--p1acf
пример.москваxn--e1afmkfd.xn--80adxhks
münchen.dexn--mnchen-3ya.de

Почему результат не похож на исходное слово

Punycode сначала переписывает в результат все ASCII-символы части имени, ставит после них дефис, а затем кодирует, какие не-ASCII-символы и на какие позиции нужно вставить. Поэтому münchen превращается в mnchen-3ya: латинские буквы сохранились, а ü закодирована в хвосте. В полностью кириллическом слове ASCII-символов нет, и закодированная часть начинается сразу после xn--.

Длина каждой части домена в ASCII-форме ограничена 63 символами, а кириллица кодируется длиннее исходного слова. Очень длинное кириллическое имя может не поместиться в лимит, хотя на вид в нём меньше 63 букв.

Кириллические домены: .рф и другие зоны

Зона .рф — национальный домен России на кириллице, в ASCII-форме это xn--p1ai. Кроме неё, кириллические имена доступны в зонах .рус (xn--p1acf), .москва (xn--80adxhks), .дети, .онлайн, .сайт и других.

В зоне .ru зарегистрировать кириллический домен нельзя: там допустимы только латинские буквы, цифры и дефис. В .рф, наоборот, используются буквы русского алфавита, цифры и дефис, а латиница не допускается.

Буквы е и ё — разные символы, и домены с ними тоже разные: ёлка.рф и елка.рф кодируются по-разному и могут принадлежать разным владельцам. Если в названии бренда есть ё, имеет смысл зарегистрировать оба варианта.

Где нужна ASCII-форма домена

Браузер показывает адрес на кириллице, но в сетевых протоколах и конфигурационных файлах почти везде используется Punycode. Вот где без него не обойтись:

  • DNS: в зонных файлах BIND, PowerDNS и большинства DNS-серверов записи указывают в виде xn--…; часть панелей регистраторов переводит имя автоматически.
  • Веб-сервер: server_name в nginx и ServerName в Apache задают в Punycode — именно так браузер передаёт имя сайта в заголовке Host.
  • SSL-сертификаты: в SAN домен записан в ASCII-форме, а certbot принимает кириллический домен только в виде xn--….
  • Почта: часть адреса после @ передаётся в Punycode; кириллица до @ требует поддержки SMTPUTF8 у всех почтовых серверов на пути письма, и поддерживают её не все.
  • HTTP-заголовки и логи: в Location, Access-Control-Allow-Origin и журналах веб-сервера домен записан в Punycode, а путь и параметры — в percent-encoding.

Как диагностировать сайт на кириллическом домене

Консольные утилиты и многие онлайн-сервисы ожидают домен в ASCII-форме, поэтому при диагностике сайта на .рф сначала переведите имя в Punycode, а затем подставляйте его в команды. Кириллица в аргументах может не распознаться или превратиться в нечитаемые байты из-за кодировки терминала.

  • DNS: dig xn--e1afmkfd.xn--p1ai A — проверить, куда указывает домен.
  • WHOIS: whois -h whois.tcinet.ru xn--e1afmkfd.xn--p1ai — реестр .рф отвечает на запрос в Punycode.
  • Сертификат: openssl s_client -connect xn--e1afmkfd.xn--p1ai:443 -servername xn--e1afmkfd.xn--p1ai — имя для SNI тоже передаётся в ASCII-форме.
  • HTTP: curl -I https://xn--e1afmkfd.xn--p1ai/ — ответ сервера без участия браузера.

Фишинг с похожими буквами: как проверить домен

Многие кириллические буквы — а, е, о, р, с, х — неотличимы от латинских. Этим пользуются для омографических атак: регистрируют домен, который выглядит как известный бренд, но записан другим алфавитом. Классический пример — аррӏе.com, полностью набранный кириллицей: в ASCII-форме это xn--80ak6aa92e.com, ничего общего с apple.com.

Браузеры защищаются от таких доменов и показывают Punycode вместо Unicode, если имя смешивает алфавиты или похоже на известный домен. Но правила у браузеров разные и не ловят всех случаев. Если ссылка вызывает сомнения, вставьте домен в конвертер: если «латинский» адрес превратился в xn--…, в нём есть символы другого алфавита.

Частые вопросы

Почему кириллический домен начинается с xn--?

+

DNS работает только с латинскими буквами, цифрами и дефисом. Punycode кодирует кириллическое имя в эти символы, а префикс xn-- показывает программам, что перед ними закодированная часть, которую нужно показывать пользователю в исходном виде.

Как перевести домен .рф в Punycode?

+

Введите домен в конвертер в режиме «Unicode → Punycode» и нажмите «Конвертировать». Например, пример.рф превратится в xn--e1afmkfd.xn--p1ai — сама зона .рф в ASCII-форме всегда записывается как xn--p1ai.

Как прописать кириллический домен в nginx?

+

Укажите в server_name ASCII-форму домена, например server_name xn--e1afmkfd.xn--p1ai www.xn--e1afmkfd.xn--p1ai;. Браузер передаёт имя сайта в заголовке Host именно в Punycode, поэтому кириллическое написание в конфигурации не сработает.

В каком виде добавлять домен в SSL-сертификат?

+

В Punycode. Удостоверяющие центры записывают в SAN ASCII-форму домена, а certbot принимает кириллические домены только в виде xn--…. Браузер при этом покажет пользователю адрес на кириллице.

Безопасны ли IDN-домены?

+

Сами по себе они легитимны, но похожие буквы разных алфавитов используют для фишинга. Перед вводом пароля или оплатой стоит проверить фактическое Punycode-имя подозрительного домена — например, в этом конвертере.

Можно ли зарегистрировать кириллический домен в зоне .ru?

+

Нет, в .ru допустимы только латинские буквы, цифры и дефис. Кириллические имена регистрируют в зонах .рф, .рус, .москва, .онлайн, .сайт и других.

Можно ли перевести в Punycode ссылку целиком?

+

Нет, Punycode применяется только к доменному имени — вводите его без протокола и пути. Кириллицу в пути и параметрах ссылки кодируют другим способом — percent-encoding, для этого есть URL-кодировщик.

Связанные инструменты