В этой статье
Что такое Punycode?
Punycode — это синтаксис кодирования, определенный в RFC 3492, который преобразует символы Unicode в ограниченный набор ASCII-символов, используемый системой доменных имен (DNS). Он позволяет интернационализированным доменным именам (IDN) — доменным именам с не-ASCII символами — работать в ASCII-инфраструктуре DNS.
Домен, закодированный в Punycode, имеет префикс xn-- (префикс ACE), сигнализирующий о наличии закодированного Unicode. Конвертер Punycode переводит между человекочитаемой формой Unicode и DNS-совместимой формой ASCII.
Как работает кодирование Punycode
Punycode использует алгоритм bootstring для представления кодовых точек Unicode как последовательности базовых ASCII-символов.
- Разделение Unicode — кодер определяет, какие символы являются базовыми ASCII (передаются без изменений), а какие являются не-ASCII (требуют кодирования)
- Дельта-кодирование — не-ASCII символы кодируются как числовые дельты, представляющие их позицию и кодовую точку
- Префикс ACE — итоговая закодированная строка получает префикс xn-- для обозначения как Punycode
Попробуйте бесплатно — без регистрации
Конвертировать Punycode →Когда использовать Punycode
Конвертация Punycode необходима при работе с интернационализированными доменными именами в системах, поддерживающих только ASCII.
- Регистрация домена — регистраторы требуют форму Punycode для регистрации IDN-доменов
- Электронная почта с международными доменами — адреса с не-ASCII доменами должны быть конвертированы в форму xn-- для доставки SMTP
- Конфигурация DNS — файлы зон DNS используют форму Punycode для любой метки домена с не-ASCII символами
Часто задаваемые вопросы
Punycode — это то же самое, что URL-кодирование?
Нет. URL-кодирование преобразует символы в последовательности %XX для URL-путей. Punycode специально кодирует метки доменов Unicode в ASCII для DNS. Они решают разные задачи.
Можно ли использовать Punycode для фишинга?
Да, это известно как атака IDN-омографов. Злоумышленники регистрируют домены с Unicode-символами, идентичными латинским буквам. Современные браузеры показывают форму xn-- для подозрительных доменов.
Все ли браузеры поддерживают интернационализированные доменные имена?
Да. Все современные браузеры автоматически конвертируют IDN-домены в Punycode для DNS-резолюции и отображают форму Unicode в адресной строке.