Конвертер IDN Punycode

5 из 2 оценок
Конвертер IDN Punycode

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

Что такое Punycode и зачем он нужен?

Punycode используется в IDNA для преобразования Unicode-меток U-label в ASCII-метки A-label. Благодаря ему имена с такими символами, как ü, é или 漢, могут обрабатываться системами, изначально рассчитанными только на основные латинские буквы, цифры и дефисы.

Метка A-label в IDNA начинается с xn--. Этот префикс сообщает приложениям с поддержкой IDNA, что остальные символы представляют собой запись U-label в формате Punycode. Точки остаются разделителями, поэтому каждая часть домена преобразуется отдельно.

Punycode применяется в рамках технологии Internationalised Domain Names in Applications, обычно обозначаемой сокращением IDNA. IDNA также отвечает за проверку и обработку символов, а Punycode создаёт ASCII-представление допустимой Unicode-метки.

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

Схема: текст проходит через инструмент Конвертер IDN Punycode в обе стороны

Как преобразовать интернационализированное доменное имя?

Введи текст Unicode в поле Преобразовать в Punycode/ASCII или ASCII-метки A-label в поле Преобразовать в IDN/Текст. Результат появится соответственно в поле Punycode/ASCII или IDN/Text.

  1. Скопируй только доменное имя или нужную метку, без окружающих кавычек.
  2. Для текста Unicode с диакритическими или нелатинскими символами используй Преобразовать в Punycode/ASCII.
  3. Для ASCII-меток A-label используй Преобразовать в IDN/Текст.
  4. Проверь каждую преобразованную метку перед добавлением в DNS, настройки электронной почты или конфигурацию приложения.
Инструмент Конвертер IDN Punycode на digily.link с формой ввода

Конвертер использует функции PHP idn_to_ascii и idn_to_utf8. Обработка выполняется на сервере. Введённые данные передаются на сервер по HTTPS и не сохраняются.

Примеры преобразования доменов

Простой пример показывает связь между отображаемым именем и его формой, совместимой с DNS.

Ввод münchen.de

Результат xn--mnchen-3ya.de

При обратном преобразовании результата получится münchen.de. Метку de, состоящую только из ASCII-символов, преобразовывать не нужно, а метка с ü превращается в метку с префиксом xn--.

На вход нужно передавать корректный текст доменного имени. Основные случаи обрабатываются следующим образом:

  • Буквы с диакритическими знаками и нелатинские символы: допустимые Unicode-метки представляются в ASCII с помощью IDNA и Punycode.
  • Точки: каждая точка разделяет метки. Поэтому домен может одновременно содержать обычные ASCII-метки и закодированные метки.
  • Цифры и обычные дефисы: эти символы уже входят в ASCII и, как правило, остаются читаемыми при соблюдении синтаксических правил доменных имён.
  • Пробелы: в обычных DNS-метках имён хостов пробелы недопустимы. Если пробел добавлен случайно, удали его, а не рассчитывай, что Punycode сохранит его как часть домена.
  • Знаки препинания: точка разделяет метки, но символы пути URL, номера порта или строки запроса не относятся к имени хоста.
  • Пустой или слишком длинный ввод: в пустом значении нет домена для преобразования. Кроме того, DNS ограничивает каждую закодированную метку 63 октетами, поэтому визуально короткая Unicode-метка после преобразования может оказаться слишком длинной.
Пример результата работы инструмента Конвертер IDN Punycode

Почему преобразование Punycode не работает или даёт неожиданный результат?

Обычно преобразование завершается ошибкой, если введён некорректный текст IDN, повреждённая A-label или значение, которое ранее обработали другим способом кодирования. При преобразовании в IDN/Text обычный ASCII-текст, который не является A-label, может остаться без изменений. Прежде чем исправлять символы вручную, проверь, что именно содержит исходное значение: Unicode-метки U-label, ASCII-метки A-label или имя хоста с URL-кодированием.

  • Повреждённые A-label или неподходящий способ кодирования: некорректная метка xn-- может не преобразоваться. Base64, шестнадцатеричный текст и URL с процентным кодированием не являются Punycode.
  • Неподдерживаемые символы: алгоритм Punycode способен представлять значения Unicode, однако правила IDNA и доменных реестров могут запрещать отдельные символы, их сочетания или системы письма.
  • Превышение длины метки: DNS ограничивает каждую закодированную метку 63 октетами, поэтому Unicode-метка после преобразования может стать слишком длинной.
  • Лишние части во входных данных: значение может стать некорректным, если вместе с именем хоста скопировать скобки, номер порта или часть HTML-атрибута.
  • Двойное кодирование: если символы в домене Punycode были явно или нестандартно закодированы процентным способом, они могут отображаться как последовательности со знаком процента. Сначала декодируй этот уровень с помощью инструмента «Декодер URL», а затем преобразуй полученный домен.
  • Двоичные данные вместо текста: IDN-преобразование работает с Unicode-текстом доменных имён. Произвольные байты файла могут не пройти проверку или превратиться в бессмысленные символы при обработке как текста.

Где встречается Punycode?

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

В адресах электронной почты Punycode может использоваться в доменной части после знака @. Имя почтового ящика перед знаком @ он не кодирует. Данные JSON и строки запроса могут содержать Punycode, если в них передаётся имя хоста, но синтаксис JSON и строк запросов не требует применять Punycode к обычному тексту.

Содержимое URI данных обычно кодируют процентным способом или в Base64. Punycode встречается в них только тогда, когда содержащийся текст включает интернационализированное имя хоста. Для значений пути или строки запроса используй URL кодировщик, а для самого имени хоста применяй Punycode.

Часто задаваемые вопросы

Можно ли вставить в IDN-конвертер полный URL?

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

Если в домене есть метка xn--, значит ли это, что сайт небезопасен?

Нет. Многие легитимные интернационализированные домены используют метки xn--. Однако визуально похожие символы из разных систем письма могут применяться в обманных именах. Перед вводом пароля или платёжных данных проверь написание декодированного адреса и убедись, что он действительно принадлежит нужной организации.

Можно ли использовать эмодзи в домене Punycode?

Нет, эмодзи запрещены в доменных метках IDNA, хотя алгоритм Punycode способен кодировать их кодовые точки. Реестры доменов могут вводить дополнительные ограничения для допустимых систем письма и символов.

Почему браузер показывает Punycode вместо Unicode?

Браузер может сохранять ASCII-форму, если метка сочетает разные системы письма, содержит символы, связанные с подменой адресов, или не соответствует его правилам отображения. Это защитная мера интерфейса, а не признак ошибки при преобразовании.

Будет ли преобразованное имя точно работать в DNS?

Нет. Успешное преобразование не означает, что домен зарегистрирован, доступен для регистрации или разрешён соответствующим реестром. Перед использованием результата проверь длину метки и её читаемое написание, а также убедись, что реестр допускает эти символы.

Поделиться

Популярные инструменты