Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Как работает Punycode? Алгоритм!!! (https://javascript.ru/forum/server/34225-kak-rabotaet-punycode-algoritm.html)

platedz 25.12.2012 00:55

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

platedz 25.12.2012 17:46

Вот нашел класс на javascript
https://github.com/bestiejs/punycode...er/punycode.js
Может кто поможет разобраться как он работает

platedz 26.12.2012 07:36

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

platedz 02.01.2013 00:44

С алгоритмом частично разобрался. Подскажите, пожалуйста, а как мне в виде двоичного числа символ отобразить в виде 0101010101 или 0x02?

melky 02.01.2013 01:00

var letter = "s"; // строка с длиной  в 1 символ
var base = 2; // в какую систему

var encoded = letter.charCodeAt().toString(base);

alert(encoded);

platedz 02.01.2013 01:15

Большое спасибо за ответ. Только что-то я не нашел, где описаны данные свойства объекта.

platedz 02.01.2013 01:22

Все понял.

platedz 02.01.2013 01:22

http://javascript.ru/Number/toString

platedz 02.01.2013 16:21

Подскажите, а как-нибудь нулями отсутствующими его заполнить можно для наглядности, а то получается то 101, то 11001, а надо чтобы было 00000101 и 00011001

platedz 02.01.2013 17:29

И подскажите, пожалуйста почему
Ни так не получается
<script>
var R = ("9");
var RR = ~R;
var Rs = R + " - " + R.charCodeAt().toString(10) + " - " + R.charCodeAt().toString(2) + " - " + R.charCodeAt().toString(16) + "<br>";
Rs += "~ - " + (RR.charCodeAt().toString(10)) + " - " + (RR.charCodeAt().toString(2)) + " - " + (RR.charCodeAt().toString(16)) + "<br>";
document.write(Rs);
</script>


ни так не получается

<script>
var R = ("9");
var Rs = R + " - " + R.charCodeAt().toString(10) + " - " + R.charCodeAt().toString(2) + " - " + R.charCodeAt().toString(16) + "<br>";
Rs += "~ - " + ~(R.charCodeAt().toString(10)) + " - " + ~(R.charCodeAt().toString(2)) + " - " + ~(R.charCodeAt().toString(16)) + "<br>";
document.write(Rs);
</script>


Часовой пояс GMT +3, время: 00:13.