Различия

Показаны различия между двумя версиями страницы.


punycode [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Punycode DNS ======
  
 +{{htmlmetatags>
 +metatag-description=(Punycode - это метод преобразования в том числе кириллических символов, относящихся к стандарту Unicode.)
 +}}
 +
 +{{ ::idn-punycode-en.png?nolink |}}
 +
 +**Punycode**  (произносится как «пуникод») — стандартизированный метод преобразования последовательностей [[Unicode]]- символов в ACE- последовательности, которые состоят только из алфавитно-цифровых символов, как это разрешено в доменных именах. Punycode описан в [[RFC]] 3492. Punycode был разработан для однозначного преобразования доменных имен в последовательность [[ASCII]]-символов.
 +
 +Причиной введения Punycode был тот факт, что в утверждённой стандартом [[DNS]] разрешены только 26 символов латинского алфавита, цифры от 0 до 9 и дефис. Для английского и некоторых других языков с латинским алфавитом этого достаточно, однако другие языки, в том числе и с латинским алфавитом, содержат дополнительные символы, например ä, ö или ü.
 +
 +Преобразование в Punycode должно происходить в клиентских приложениях (например, браузерах), а не на сервере.
 +
 +Чтобы [[IDN]] - домен после преобразования нельзя было спутать с обычным доменом, все IDN - домены начинаются со специального префикса «XN--». 
 +
 +===== JavaScript и Punycode =====
 +
 +Для [[JavaScript]] существует клиентская библиотека [[https://github.com/bestiejs/punycode.js|punycode.js]], планируется, что она также заменит в составе [[Node.js]] с версии 0.6.2 устаревший алгоритм. Скачиваем:<file>
 +$ git clone git://github.com/bestiejs/punycode.js.git
 +</file>
 +Для подключения в браузере:
 +<file>
 +<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>
 +</file>
 +Для подключения в [[Node.js]] (младше версии 0.6.2) нужно использовать npm
 +<file>
 +npm install punycode
 +</file>
 +Подключение для [[Narwhal]], [[Node.js]], [[RingoJS]]:
 +<file>
 +var punycode = require('punycode');
 +</file>
 +===== PHP и Punycode =====
 +  * [[https://github.com/bestiejs/punycode.js|punycode.js]]
 +  * [[http://s3blog.org/konvertacija-domena-v-zone-rf-v-punycode.html|Perl: Конвертация домена в зоне .рф в punycode]]
 +  * [[http://php.net/manual/en/ref.intl.idn.php|PHP: IDN Functions]] требуется установка пакета **php5-intl**
 +  * [[http://pear.php.net/package/Net_IDNA2|PEAR Net_IDNA2]]

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!