Конвертер кодировок текста

Punycode-конвертер: домен.рф ↔ xn--

Система доменных имен (DNS) появилась задолго до русских доменов и понимает только латинские буквы, цифры и дефис. Поэтому имя вроде пример.рф перед отправкой в сеть записывается специальным кодом — Punycode — и превращается в xn--e1afmkfd.xn--p1ai. Браузер делает это незаметно и показывает в адресной строке русские буквы, но хостинг, DNS-редактор, почтовый сервер или файл настроек часто требуют именно запись с xn--.

Конвертер выше переводит домен в обе стороны. Можно вставить не только домен, но и полный адрес страницы или почты — изменится только имя домена, — а также несколько адресов сразу, по одному в строке.

Как пользоваться

  1. Получить запись xn--. Вставьте русский домен — результат появится сразу. Можно нажать и кнопку «Перевести в Punycode».
  2. Прочитать запись xn--. Вставьте адрес вида xn--80aswg.xn--p1ai — конвертер покажет его русскими буквами (в примере — сайт.рф).
  3. Перевести адрес почты. Вставьте его целиком, например info@пример.рф: имя ящика до знака @ не меняется.

Как устроена запись xn--

Каждая часть домена между точками кодируется отдельно. Приставка xn-- сообщает, что дальше идет Punycode. Если в части есть латинские буквы или цифры, они записываются в начале как есть, а после последнего дефиса идет закодированная часть: например, test-сайт.рф превращается в xn--test--8ve7d2cl.xn--p1ai. Большие и маленькие буквы перед кодированием приводятся к строчным, поэтому Пример.РФ и пример.рф — один и тот же домен.

Доменная зонаЗапись в Punycode
.рфxn--p1ai
.русxn--p1acf
.москваxn--80adxhks
.детиxn--d1acj3b
.онлайнxn--80asehdb
.сайтxn--80aswg

Где нужна запись xn--

  • Хостинг и DNS. Многие панели принимают только Punycode: при добавлении сайта, записей A, MX, TXT, при выпуске SSL-сертификата.
  • Настройки сайта. В файлах .htaccess и конфигурации nginx, в robots.txt (директива Sitemap), в адресах карты сайта и в настройках CMS домен надежнее указывать в Punycode.
  • Почта. Старые почтовые программы и сервисы рассылок не принимают адреса с русским доменом — для них подходит запись info@xn--e1afmkfd.xn--p1ai.
  • Проверка подозрительных ссылок. Если браузер показывает адрес как xn--..., хотя домен выглядит знакомым, в нем могут быть буквы из другого алфавита. Например, аpple.com с русской «а» — это xn--pple-43d.com, совсем другой сайт. Конвертер предупреждает, когда в домене перемешаны латиница и кириллица.

Punycode в программах

ГдеВ PunycodeИз Punycode
JavaScriptnew URL('http://пример.рф').hostnameвстроенной функции нет
PHP (расширение intl)idn_to_ascii('пример.рф')idn_to_utf8($s)
Python 3'пример.рф'.encode('idna')b'xn--e1afmkfd.xn--p1ai'.decode('idna')

Punycode кодирует только имя домена. Русские буквы в остальной части адреса — в пути к странице и параметрах — записываются кодами вида %D0%9F, и для них нужен декодер URL.

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

Почему в адресной строке браузера русский домен, а при копировании получается xn--?
Браузер показывает домен русскими буквами для удобства, но в сети адрес всегда передается в Punycode. Некоторые программы и мессенджеры при вставке получают именно эту запись. Обе записи ведут на один и тот же сайт.
Какую запись указывать в Яндекс Вебмастере и Google Search Console?
Сайт можно добавить в любом виде: сервисы сами переводят домен в Punycode. В файлах robots.txt и sitemap.xml, которые читают роботы, надежнее использовать запись xn--.
Почему браузер показывает домен в виде xn--, а не русскими буквами?
Так браузеры защищают от поддельных адресов: если в домене смешаны буквы разных алфавитов или используется алфавит, не подходящий для доменной зоны, адрес показывается в Punycode. Вставьте его в конвертер, чтобы увидеть, какие буквы на самом деле в нем записаны.
Можно ли перевести в Punycode домен на других языках?
Да. Punycode работает с любыми алфавитами: например, münchen.de превращается в xn--mnchen-3ya.de, а домены на китайском или арабском переводятся так же.