Asummonster 592 Опубликовано: 28 июля, 2015 (изменено) Привет всем! Мы с Лёхой решили написать мост между всеми устройствами по интернету. Но тут мы столкнулись с такой проблемой: если вы в браузере напишете запрос юникодом, то браузер сам его переведёт в url. А вот при request в OC он не хочет обращаться к скрипту. Так вот, запихнул буквы русского языка в таблицу и написал простенькую заменялку. Она не сильно требовательная к производительности(тестировалось на процессоре Т2, перевело 1828 символов init'а за ~1,5 секунды. Памяти он тоже особо не съел. Решил выложить(мало-ли, вдруг кто-то будет делать портирование гугл-переводчика на OC ) Вот код: tableLIT={'Ѐ','Ё','Ђ','Ѓ','Є','Ѕ','І','Ї','А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я',' ','а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я','ё'}tableURL={'%d0%80','%d0%81','%d0%82','%d0%83','%d0%84','%d0%85','%d0%86','%d0%87','%d0%90','%d0%91','%d0%92','%d0%93','%d0%94','%d0%95','%d0%96','%d0%97','%d0%98','%d0%99','%d0%9a','%d0%9b','%d0%9c','%d0%9d','%d0%9e','%d0%9f','%d0%a0','%d0%a1','%d0%a2','%d0%a3','%d0%a4','%d0%a5','%d0%a6','%d0%a7','%d0%a8','%d0%a9','%d0%aa','%d0%ab','%d0%ac','%d0%ad','%d0%ae','%d0%af','%20','%d0%b0','%d0%b1','%d0%b2','%d0%b3','%d0%b4','%d0%b5','%d0%b6','%d0%b7','%d0%b8','%d0%b9','%d0%ba','%d0%bb','%d0%bc','%d0%bd','%d0%be','%d0%bf','%d1%80','%d1%81','%d1%82','%d1%83','%d1%84','%d1%85','%d1%86','%d1%87','%d1%88','%d1%89','%d1%8a','%d1%8b','%d1%8c','%d1%8d','%d1%8e','%d1%8f','%d1%91'} unicode=require("unicode") function translate(data) text="" for i=1, #data do local thisChar=unicode.sub(data, i, i) for a=1, #tableLIT do if thisChar==tableLIT[a] then thisChar=a break end end if type(thisChar)=="number" then text=text..tableURL[thisChar] else text=text..thisChar end end return text end Изменено 28 июля, 2015 пользователем Asummonster Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 28 июля, 2015 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 624 Опубликовано: 28 июля, 2015 ...Он просто не знает что есть алгоритм который превращает utf-8 символы в коды урловские. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster Автор темы 592 Опубликовано: 28 июля, 2015 Он просто не знает что есть алгоритм который превращает utf-8 символы в коды урловские. Оу.... И какой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 624 Опубликовано: 28 июля, 2015 Оу....И какой?google.com Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster Автор темы 592 Опубликовано: 28 июля, 2015 Нет там ничего, уже посмотрел Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 28 июля, 2015 Да вы упоролись...Как насчет urlencode() ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster Автор темы 592 Опубликовано: 28 июля, 2015 Да вы упоролись... Как насчет urlencode() ? В lua? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 28 июля, 2015 я думал ты снова о php Отправлено с моего U9500 через Tapatalk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 28 июля, 2015 Нео! Ты лучше бы чем руки скелету из жопы рисовать полдня, дал лучше бы человеку код или помог как-то ему. П.С. Держи, Монстрик, свою кодировочную фиговину: function urlencode(str) if (str) then str = string.gsub (str, "\n", "\r\n") str = string.gsub (str, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end) str = string.gsub (str, " ", "+") end return str end http://www.url-encode-decode.com 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster Автор темы 592 Опубликовано: 28 июля, 2015 Нео! Ты лучше бы чем руки скелету из жопы рисовать полдня, дал лучше бы человеку код или помог как-то ему. П.С. Держи, Монстрик, свою кодировочную фиговину: function urlencode(str) if (str) then str = string.gsub (str, "\n", "\r\n") str = string.gsub (str, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end) str = string.gsub (str, " ", "+") end return str end http://www.url-encode-decode.com Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах