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