вторник, 14 августа 2012 г.

Punycode

Библиотек для конвертирования в Punycode много. В общем случае оно называется IDN или IDNA, иногда Punycode.

Python
Встроенными средствами с 2.4:
>>> ru = "ДОМЕНЫ.РУ"
>>> u = unicode(ru, "koi8-r") # Из koi8 в unicode...
>>> u.encode("idna") #... и перекодируем
'xn--d1acufc5f.xn--p1ag'

Perl
Тут несколько библиотек, все работают по разному...
Net::IDN::Encode
URI::UTF8::Punycode
IDNA::Punycode (DEPRECATED)
Convert::RACE
Net::IDN::Nameprep
Net::LibIDN (бинды к libidn)

php
http://pear.speedpartner.de/,
http://fastserv.name.net/open_source/php/punycode/

C
idnkit, libidn

линки
http://s3blog.org/konvertacija-domena-v-zone-rf-v-punycode.html
http://www.rlnic.ru/technology/punycode.pl
http://www.koscheev.ru/articles/perl/?n=38