- 22
- 9
- Версия MoonLoader
- .026-beta
Здравствуйте, не получается преобразовать запрос с русскими символами пробелами :(
Использую эту функцию..
Вставил всё точь-в-точь как в примере, но выходит что то не то.
Вот что выводит в консоль.
Использую эту функцию..
Описание: аналог функции из PHP http_build_query. Из таблицы составляет url запрос
Код:
Пример использования:Lua:function char_to_hex(str) return string.format("%%%02X", string.byte(str)) end function url_encode(str) local str = string.gsub(str, "\\", "\\") local str = string.gsub(str, "([^%w])", char_to_hex) return str end function http_build_query(query) local buff="" for k, v in pairs(query) do buff = buff.. string.format("%s=%s&", k, url_encode(v)) end local buff = string.reverse(string.gsub(string.reverse(buff), "&", "", 1)) return buff end
Вернет:Lua:http_build_query({a = "привет\nсобака", c = "я люблю писать русский текст с пробелами"})
Код:a=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82%0A%D1%81%D0%BE%D0%B1%D0%B0%D0%BA%D0%B0&c=%D1%8F%20%D0%BB%D1%8E%D0%B1%D0%BB%D1%8E%20%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C%20%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%20%D1%81%20%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8
Вставил всё точь-в-точь как в примере, но выходит что то не то.
Lua:
require "lib.moonloader"
function main()
while not isSampAvailable() do wait(100) end
sampRegisterChatCommand("test", cmdTest)
while true do wait(0)
end
end
function cmdTest()
print(http_build_query({a = "привет\nсобака", c = "я люблю писать русский текст с пробелами"}))
end
function char_to_hex(str)
return string.format("%%%02X", string.byte(str))
end
function url_encode(str)
local str = string.gsub(str, "\\", "\\")
local str = string.gsub(str, "([^%w])", char_to_hex)
return str
end
function http_build_query(query)
local buff=""
for k, v in pairs(query) do
buff = buff.. string.format("%s=%s&", k, url_encode(v))
end
local buff = string.reverse(string.gsub(string.reverse(buff), "&", "", 1))
return buff
end
Вот что выводит в консоль.
Lua:
a=3.401509E-19F0.00000003.401509E-1983.401509E-1923.401509E-1950.00000020X0.0000000000000P+00.00000010.000000E+00E0.000000E+0010.000000E+0000.000000E+00A0.000000E+000&c=0.000000F2.121996E-312B0.000000E0.000000E+0010.000000E+00B0.000000E2.471080E-312F0.000000E+0080.00000010.000000E+0000.00000020.000000C0.00000000.00000030.00000010.00000010.000000E+00A0.000000E+0080.000000E+0090.00000020.000000E+0050.000000E+00A0.00000010.00000020.00000010.000000E+00F0.00000000.000000E+00E0.000000E+0010.000000E+0050.000000E+00B0.000000E+0000.000000E+00C0.000000E+008