1

Тема: Как работает Punycode? Алгоритм!!!

Уже не знаю, где спросить, поэтому попробую здесь, может кто ответит
Купил скрипт конструктор сайтов, но он не поддерживает русские домены.
Спецификацию RFC 3492 я почитал, хотя с ангийским довольно недружен, но тем не менее. Класс для создания Idn доменов я нашел, но как работает так и не понял. Объясните пожалуйста.

2

Re: Как работает Punycode? Алгоритм!!!

Разницы с обычными доменами нет, просто надо оперировать в настройке Apache кодированным представлением вида xn--***.xn--p1ai. Именно в таком виде надо писать домен в файл виртуальных хостов и в файл hosts, если это надо делать.

Собственно по скрипту помочь не могу, но попробуйте писать домен в кодированном виде, не в кириллице.

ВКонтакте Facebook Twitter

3

Re: Как работает Punycode? Алгоритм!!!

Я понимаю, как оно преобразуется, но меня интересует именно алгоритм, чтобы дать возможность пользователям вводить домены на русском языке, я понимаю, что ставится префик xn-- перед интернациональным домено, но вот что же дальше. по какому алгоритму рф преобразуется в p1ai?

4

Re: Как работает Punycode? Алгоритм!!!

Используйте класс для работы с punycode.
http://pear.php.net/package/Net_IDNA2/
Здесь пример: http://pear.php.net/package/Net_IDNA2/d … b.php.html
Описание функций: http://pear.php.net/package/Net_IDNA2/d … IDNA2.html

ВКонтакте Facebook Twitter

5

Re: Как работает Punycode? Алгоритм!!!

Класс у меня есть, но дело в том, что мне охота разобраться как это работает безо всяких классов

6

Re: Как работает Punycode? Алгоритм!!!

platedz пишет:

Класс у меня есть, но дело в том, что мне охота разобраться как это работает безо всяких классов

Не понимаю. В классе и есть весь необходимый для кодировки данных код. В RFC описание тоже есть. Никаким образом кодировку описать иначе, чем это сделано в RFC, нельзя.

ВКонтакте Facebook Twitter

7

Re: Как работает Punycode? Алгоритм!!!

Разбирая класс http://phlymail.com/en/downloads/idna-convert.html в целом я застрял на конечном автомате, с которым познакомился только сегодня. Т.е. смысл кодировки сводится к тому, чтобы привести символы в их десятиричное представление. Убрать все не ascii символы, спереди добавить xn-- а в конце -. А дальше уже идет алгоритм конечного автомата, который кроется в функции protected function _encode($decoded) и мне не очень понятен.
Соответственно вопрос в том как работает конечный автомат, соответственно, для данного случае интересует больше. Но любой ответ будет в помощь