Ice_man 547 Опубликовано 12 июня, 2014 Share Опубликовано 12 июня, 2014 Всем привет, есть небольшой скрипт, буквально в 5-10 строчек, писал фиг знает кто, нужно пояснить его, сам я ява скрипт не учил к сожалению.. Есть такие кто может помочь? Ссылка на сообщение Поделиться на другие сайты
gecsagen 279 Опубликовано 12 июня, 2014 Share Опубликовано 12 июня, 2014 (изменено) Я не обещаю(давно сей язык учил),но можно посмотреть.Как Вам удобнее в ЛС или в теме? Изменено 12 июня, 2014 пользователем gecsagen Ссылка на сообщение Поделиться на другие сайты
Skarbovoy 470 Опубликовано 12 июня, 2014 Share Опубликовано 12 июня, 2014 Я не обещаю(давно сей язык учил),но можно посмотреть.Как Вам удобнее в ЛС или в теме? +1 Ссылка на сообщение Поделиться на другие сайты
Ice_man 547 Опубликовано 13 июня, 2014 Автор Share Опубликовано 13 июня, 2014 В общем вот скрипт: //utf8 to 1251 converter (1 byte format, RU/EN support only + any other symbols) by drgluck function utf8_decode (aa) { var bb = '', c = 0; for (var i = 0; i < aa.length; i++) { c = aa.charCodeAt(i); if (c > 127) { if (c > 1024) { if (c == 1025) { c = 1016; } else if (c == 1105) { c = 1032; } bb += "%" + (c - 848).toString(16); } } else { if(c == 32) bb+="+"; else bb += aa.charAt(i); } } return bb; } Использование скрипта на сайте: if(but.name == "bremb") { if(word !="") { window.open("http://adstat.rambler.ru/wrds/wrds.pl?words=" + utf8_decode(word)); } else { window.open("http://adstat.rambler.ru"); } return; } В общем желательно бы прокомментировать основные строчки и составить блок схему простенькую, за работу отблагодарю баллами =) как я понял скрипт выполняет декодирование utf8 в javascript Ссылка на сообщение Поделиться на другие сайты
ACIK 404 Опубликовано 13 июня, 2014 Share Опубликовано 13 июня, 2014 (изменено) Это конвертор из UTF8 в Win1251 (только для рус/англ, 1 байт, т.е. со значениями типа 0aaa aaaa от 0 до 127 на 1 байт). Работу этой функции мы часто видим в адресной строке с кириллицей. Типа: '123 Ёё aZ аЯ' -> '123+%a8%b8+aZ+%e0%df' Схему чертить влом... Баллы не надо, т.к. не знаю что это... Code: function utf8_decode (aa) { //функция с именем utf8_decode и аргументом аа var bb = '', c = 0; //объявление и инициализация переменных bb - пустая строка, с - ноль for (var i = 0; i < aa.length; i++) { //цикл через переменную i с шагом 1, от 0 до размера (длины массива) aa. //Короче перебираем посимвольно (поэлементно) строку (массив), полученную в качестве аргумента функции. c = aa.charCodeAt(i); //запихиваем в переменную C результат преобразования элемента массива (строки) в число. //Обычно это число 0 до 65536. Первые 128 значений совпадают с ASCII, также, чтобы получить старшие значения от 65536 нужно получать значения 2-х символов if (c > 127) { // если значение С больше 127, нужно преобразовать if (c > 1024) {//если C > 1024 if (c == 1025) { // если С = 1025, заморочка для буквы Ё c = 1016; // С присвоим 1016, ниже будем вычитать (1016-848 = 168, т.е. Ё) } else if (c == 1105) { //а если С = 1105, заморочка для буквы ё c = 1032; //С = 1032 (1032-848 = 184 т.е. ё) } //конец если if (c==1025) else if (c==1025) bb += "%" + (c - 848).toString(16); // преобразуем значение C>1024 (после вычитания 848) в шестнадцатеричное и с смволом % пихнем в выходную строку (массив) bb } //конец если if (c > 1024) } else { // если меньше 128, писал выше, что первые 128 значений совпадают с ASCII, поэтому просто вернем символ, полученный из массива if(c == 32) //если значение С = 32 (пробел) bb+="+"; //то добавим к содержимому строки bb символ "+"… Ну, а пробел будет плюсом else //иначе bb += aa.charAt(i); //вот эта функция возвращает символ из строки (массива) под номером i из нашего основного цикла-перебора. Результат добавим к содержимому массива bb } //конец если if (c > 127) } //конец основного цикла return bb; // вернем результат преобразования из строки (массива) bb } //конец функции Итог работы функции: символы с кодом от 0 до 127 возвращаем "как есть", от 128 до 1024 - пропускаем, от 1025 преобразуем в шестнадцетиричный код (с некоторой заморочкой с Ё, ё), пробел заменяем на "+". Изменено 13 июня, 2014 пользователем ACIK 1 Ссылка на сообщение Поделиться на другие сайты
Ice_man 547 Опубликовано 14 июня, 2014 Автор Share Опубликовано 14 июня, 2014 (изменено) Спасибо=)) Баллы это форумная валюта необходимая для покупок в магазине, подумай, вдруг нужна?=)P.S. Ответь в ЛС на счет баллов=)) Изменено 14 июня, 2014 пользователем Ice_man Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения