Перейти к содержимому
Asummonster

Кириллица ==> URL

Рекомендуемые сообщения

Привет всем! Мы с Лёхой решили написать мост между всеми устройствами по интернету. Но тут мы столкнулись с такой проблемой: если вы в браузере напишете запрос юникодом, то браузер сам его переведёт в 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
Изменено пользователем Asummonster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

...

Он просто не знает что есть алгоритм который превращает utf-8 символы в коды урловские. :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Он просто не знает что есть алгоритм который превращает utf-8 символы в коды урловские. :D

Оу....

И какой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да вы упоролись...
Как насчет urlencode() ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да вы упоролись...

Как насчет urlencode() ?

В lua?  :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я думал ты снова о php

 

Отправлено с моего U9500 через Tapatalk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нео! Ты лучше бы чем руки скелету из жопы рисовать полдня, дал лучше бы человеку код или помог как-то ему.

 

П.С. Держи, Монстрик, свою кодировочную фиговину:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нео! Ты лучше бы чем руки скелету из жопы рисовать полдня, дал лучше бы человеку код или помог как-то ему.

 

П.С. Держи, Монстрик, свою кодировочную фиговину:

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

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...