|
Как работает Punycode? Алгоритм!!!
Уже не знаю, где спросить, поэтому попробую здесь, может кто ответит
Купил скрипт конструктор сайтов, но он не поддерживает русские домены. Спецификацию RFC 3492 я почитал, хотя с ангийским довольно недружен, но тем не менее. Класс для создания Idn доменов я нашел, но как работает так и не понял. Объясните пожалуйста. |
Вот нашел класс на javascript
https://github.com/bestiejs/punycode...er/punycode.js Может кто поможет разобраться как он работает |
Разбирая класс http://phlymail.com/en/downloads/idna-convert.html в целом я застрял на конечном автомате, с которым познакомился только сегодня. Т.е. смысл кодировки сводится к тому, чтобы привести символы в их десятиричное представление. Убрать все не ascii символы, спереди добавить xn-- а в конце -. А дальше уже идет алгоритм конечного автомата, который кроется в функции protected function _encode($decoded) и мне не очень понятен.
Соответственно вопрос в том как работает конечный автомат, соответственно, для данного случае интересует больше. Но любой ответ будет в помощь |
С алгоритмом частично разобрался. Подскажите, пожалуйста, а как мне в виде двоичного числа символ отобразить в виде 0101010101 или 0x02?
|
var letter = "s"; // строка с длиной в 1 символ var base = 2; // в какую систему var encoded = letter.charCodeAt().toString(base); alert(encoded); |
Большое спасибо за ответ. Только что-то я не нашел, где описаны данные свойства объекта.
|
Все понял.
|
|
Подскажите, а как-нибудь нулями отсутствующими его заполнить можно для наглядности, а то получается то 101, то 11001, а надо чтобы было 00000101 и 00011001
|
И подскажите, пожалуйста почему
Ни так не получается <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, время: 08:29. |
|