Конвертер Punycode / IDN
КодированиеПреобразует интернационализированные домены между Unicode (中文.com) и ASCII Punycode (xn--). Поддерживает адреса email и подробность по меткам. RFC 3492.
Удалённые URL не запрашиваются; вставьте JSON напрямую.
Кодирование Punycode RFC 3492; не является полным соответствием IDNA2008 (без CheckBidi / CheckNFC). ACE-метка, технически недопустимая по IDNA2008, может быть декодирована.
На этой странице
Что такое Punycode?#
Система доменных имён (DNS) построена на ASCII — буквы A-Z, цифры и дефис. Как же браузер резолвит домен вроде 中文.com или münchen.de, чьи символы не входят в этот алфавит? Ответ — Punycode (и каркас IDN вокруг него): обратимое кодирование, которое превращает каждую не-ASCII метку в ASCII-безопасную форму с префиксом xn--. DNS видит только xn--fiq228c.com; браузер показывает вам 中文.com.
Этот инструмент конвертирует в обоих направлениях:
- Unicode → Punycode берёт Unicode-домен или email и выдаёт форму
xn--, которую DNS и сертификаты несут на самом деле. Каждая метка преобразуется независимо —münchen.中文.comстановитсяxn--mnchen-3ya.xn--fiq228c.com, причём завершающий.comостаётся как есть, потому что он уже ASCII. - Punycode → Unicode делает обратное: читает метки
xn--обратно в человекочитаемый шрифт.
Email тоже поддерживается. Инструмент обнаруживает @, конвертирует только доменную часть и оставляет локальную часть (имя ящика) нетронутой — поэтому Büchner@中文.com становится Bü[email protected], а не искажённой конверсией всей строки.
Как пользоваться#
- Выберите Unicode → Punycode или Punycode → Unicode переключателем в левом верхнем углу. Инструмент также подсказывает направление, замечая метку
xn--во вводе. - Вставьте домен или email в панель Ввод. Заголовок показывает, распознано ли значение как домен или email.
- Преобразованный результат заполняет панель Вывод; нажмите Копировать, чтобы забрать его.
- Под панелями таблица «Подробно по меткам» показывает каждую метку и во что она превратилась — удобно, когда у длинного домена несколько не-ASCII меток и изменились лишь некоторые.
- Используйте Вывод → Ввод, чтобы перенести вывод обратно в ввод и переключить направление (быстрая проверка обратного пути), Пример, чтобы загрузить
münchen.中文.com, и Очистить для сброса.
Ключевые возможности#
- Оба направления, каждая метка сама по себе. Каждая метка конвертируется независимо, а таблица развёртки точно показывает, какие изменились, а какие остались ASCII.
- С учётом email. Одиночный
@обнаруживается, и имя ящика сохраняется; кодируется только доменная сторона. Ввод с несколькими@отвергается с ясным сообщением, а не молча портит результат. - Нормализация разделителей. Точка полной ширины
., идеографическая точка。и халф-уидовская。все трактикуются как ASCII-точка.— так, как они и должны быть в IDN, поэтому вставленный текст не ломается. - Строго на malformed-ввод. Плохая метка
xn--(напримерxn--!!) вызывает чистую ошибку, указывающую на проблемную метку, вместо выдачи неверного домена. - **Честно о области применения. Примечание о соответствии под инструментом прямо говорит, что здесь реализовано кодирование Punycode и шаг отображения — это не полный валидатор IDNA2008, поэтому технически недопустимая ACE-метка может здесь декодироваться.
Разбор примера#
Конвертация Unicode → Punycode: заглушка münchen.中文.com превращается в:
xn--mnchen-3ya.xn--fiq228c.com
Развёртка показывает три метки, две из них конвертированы: münchen → xn--mnchen-3ya, 中文 → xn--fiq228c, а .com нетронут, потому что уже ASCII. Переключитесь на Punycode → Unicode и вставьте результат обратно, чтобы точно восстановить münchen.中文.com.
Ещё несколько реальных преобразований, на которые стоит посмотреть:
中文.com → xn--fiq228c.com
münchen.de → xn--mnchen-3ya.de
😂.com → xn--g28h.com
café.fr → xn--caf-dma.fr
日本語.jp → xn--wgv71a119e.jp
Büchner@中文.com → Bü[email protected] (email: mailbox preserved)
Последний случай — тот, что ловит людей: наивные инструменты кодируют всю строку и ломают адрес. Здесь меняется лишь доменная часть после @.
FAQ#
Почему мой домен-эмодзи конвертируется в такую короткую метку xn--?#
Односимвольный домен-эмодзи вроде 😂.com превращается в xn--g28h.com, потому что Punycode extraordinarily компактен для метки с одним не-ASCII символом, за которым идёт ASCII, — он кодирует позиции и кодовые точки не-ASCII символов относительно ASCII, поэтому односимвольной метке нужно совсем мало байт. Более длинные или разнообразные не-ASCII метки дают более длинные ACE-строки.
Вывод выглядит так же, как ввод — что-то произошло?#
Если каждая метка во вводе уже чистый ASCII (например example.com), кодировать нечего, и вывод равен вводу. Таблица развёртки — надёжный индикатор: метка, чей вывод совпадает с её вводом, не конвертировалась, потому что ей это было не нужно.
Я вставил email, а локальная часть не конвертировалась. Это правильно?#
Да, и намеренно. Интернационализированный email (SMTPUTF8) допускает UTF-8 в имени ящика, но конвертация его в xn-- неверна для общего случая — локальная часть не DNS-имя и не разрешается через Punycode. Этот инструмент конвертирует только доменную сторону, которая и должна быть DNS-безопасной. Именно поэтому несколько @ отвергаются: они делают «доменную сторону» неоднозначной.
Можно ли использовать ASCII-форму, чтобы регистрировать или резолвить любой домен?#
Для резолвинга любым современным браузером или резолвером — да. Для регистрации правила строже: IDNA2008 запрещает некоторые символы и нормализации, которые разрешали старые отображения (IDNA2003). Этот инструмент честно делает кодирование, но не запускает полные проверки валидности IDNA2008, поэтому строка, которая здесь кодируется чисто, может быть всё же отвергнута регистратором. Если сомневаетесь, проверьте инструментом поиска вашего регистратора.