Кириллический адрес кодирование декодирование
Мы столкнулись с кириллическим адресом и вдруг... у нас возникли проблемы. Я конечно, краем уха слышал об этом, ну вот и они докатились до меня!
Сперва давайте коснемся немного теории, и первое, что хочется сказать, что ничего внятного я так и не смог найти, где четко было бы сказано, как формируются кириллические адреса и вообще, как это работает!
Нам не столь это важно, но тем не менее, что удалось мне понять из всего прочитанного и как я понял, как это работает. Человек выбирает кириллический адрес «admin@домен.рф» и система его кодирует в соответствующий адрес на латинице и это получится - «admin@xn--d1acufc.xn--p1ai»
Это называется – punycode - стандартизированный метод преобразования последовательностей Unicode-символов.
Если по-русски, то преобразование кириллического адреса в адрес латинскими буквами – не путать с транслитерацией!
Как преобразовать кириллический адрес в нормальный и обратно!?
Далее эта ссылка уже есть, но здесь она точно должна быть, как пример того, как можно преобразовать кириллический адрес в punycodeВ общих словах с теорией разобрались, теперь приступим к самому преобразованию, чтобы не мучатся назовем это функцией punycode.
Как работает преобразование punycode и встроить на сайт
Теперь нам нужно либо найти, либо написать самостоятельно скрипт кодирования и декодирования в punycode. В интернете уже есть готовые и решения поэтому, мы возьмем его и переделаем его под наши потребности.
Вот наш код:
<?php
require_once('idna_convert.class.php');
$idn = new idna_convert(array('idn_version'=>2008));
$punycode=(stripos($punycode, 'xn--')!==false) ? $idn->decode($punycode) : $idn->encode($punycode);
echo $punycode;
?>
Ну и дальше применить по своему усмотрению очень просто. Прогоняете переменную, в которой находится ваш адрес чрез функцию punycode и получаете результат.
Пример кириллического адреса
Удивительно! Но по нескольким сайтам прошелся, но нигде не увидел конкретного примера кириллического адреса, который не прошел кодирование
Поэтому вот здесь приведем пример кириллического адреса без кодирования:
А реальный адрес:
кодирование русский адрес
декодирование русский адрес
пример декодирования кириллических адресов
декодировать кириллический адрес в нормальный
как преобразовать кириллический адрес
использование punycode

подробнее.
подробнее.