Содержание

Punycode DNS

Punycode (произносится как «пуникод») — стандартизированный метод преобразования последовательностей Unicode- символов в ACE- последовательности, которые состоят только из алфавитно-цифровых символов, как это разрешено в доменных именах. Punycode описан в RFC 3492. Punycode был разработан для однозначного преобразования доменных имен в последовательность ASCII: Расшифровка аббревиатуры, история и применение-символов.

Причиной введения Punycode был тот факт, что в утверждённой стандартом Раздел DNS: Что такое DNS разрешены только 26 символов латинского алфавита, цифры от 0 до 9 и дефис. Для английского и некоторых других языков с латинским алфавитом этого достаточно, однако другие языки, в том числе и с латинским алфавитом, содержат дополнительные символы, например ä, ö или ü.

Преобразование в Punycode должно происходить в клиентских приложениях (например, браузерах), а не на сервере.

Чтобы IDN Интернационализованные Доменные Имена - домен после преобразования нельзя было спутать с обычным доменом, все IDN - домены начинаются со специального префикса «XN–».

JavaScript и Punycode

Для JavaScript существует клиентская библиотека punycode.js, планируется, что она также заменит в составе Node.js с версии 0.6.2 устаревший алгоритм. Скачиваем:

$ git clone git://github.com/bestiejs/punycode.js.git

Для подключения в браузере:

<script type="text/javascript" src="punycode.js"></script>
<script type="text/javascript" language="javascript">
// конвертация в UTF-8
var result = punycode.ToASCII('кремль.рф');
</script
<script type="text/javascript" language="javascript">
// конвертация в ASCII
var result = punycode.ToUnicode('XN--E1AJEDS9E.XN--P1AI');
</script>

Для подключения в Node.js (младше версии 0.6.2) нужно использовать npm

npm install punycode

Подключение для Narwhal, Node.js, RingoJS:

var punycode = require('punycode');

PHP и Punycode