О себе События Портфолио Статьи Гостевая Фотоальбом На злобу дня Ссылки Учеба Программы
Alex_K (г.Киров) - Алексей Кощеев
Хостинг и регистрация доменов в Кирове

Интересные решения Perl. Вопросы и ответы

Как преобразовать доменное имя, содержащее символы национального алфавита?

Речь идет о символах, которые являются национальными и не являются символами латинского алфавита.

IDN — (англ. International Domain Names — Интернациональные Доменные Имена) — это доменные имена, в которых можно использовать символы национальных алфавитов, например, привет.ru.

Особенность IDN заключается в том, что они имеют прфикс XN--. Например, имя кочегарка выглядит так XN--80AAHHYDYT3D.

Для преобразования IDN в символы национального алфавита (и обратно) используйте модуль IDNA::Punycode.

use IDNA::Punycode; idn_prefix('xn--'); $punycode = encode_punycode($unicode); $unicode = decode_punycode($punycode);

Этот модуль содержит функции, которые принимают/возвращают строки в кодировке UTF-8.

Смотрите также: Как конвертировать строку из UTF-8 в Windows-1251?
Регистрация доменов и хостинг в Кирове и не только

Опубликовано: 08 июня 2008 года.

Комментарии посетителей сайта

Алексей Кощеев    08.11.2010 23:14
  Дополнение к теме спустя 2 года.

Обнаружилось, что модуль IDNA::Punycode является DEPRECATED, т.е. нерекомендованным к использованию. Кроме того, он не работает с доменами целиком (а только его компонентами, разделенными точкой, т.е. строками, которые вобщем-то доменом не являются). В теле этого модуля рекомендуется использовать и используется модуль Net::IDN::Encode.

Вот пример использования модуля для конвертирования домена целиком:
require Net::IDN::Encode;
local $Net::IDN::Encode::IDNA_prefix = 'XN--';
$unicode = Net::IDN::Encode::domain_to_unicode($punycode);

Далее: Как преобразовать русскую строку для отображения на WAP-сайте?
Предыдущий вопрос:Как правильно упорядочить массив чисел с помощью sort?
Перейти к списку вопросов
Fanshop.ru

Рейтинг@Mail.ru

Rambler's Top100

© Алексей Кощеев, г.Киров, 2001-2017 хостинг предоставлен компанией Айхэд