如果network.request的url字符串在Corona SDK中包含中文字符,则控制台将记录“URL参数格式错误的URL”。例如,如果url字符串为“http://xxxx.com?name=张三&age=23”,则会出现问题,但如果汉字被英文字符替换,一切都会好的。怎么可以解决?
答案 0 :(得分:0)
您应该在GET
或POST
之前对中文字符进行编码。
这里有一个例子:
local p ="张三"
function urlEncode( str )
assert( type(str)=='string', "urlEncode: input not a string" )
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
function urlDecode( str )
assert( type(str)=='string', "urlDecode: input not a string" )
str = string.gsub (str, "+", " ")
str = string.gsub (str, "%%(%x%x)",
function(h) return string.char(tonumber(h,16)) end)
str = string.gsub (str, "\r\n", "\n")
return str
end
network.request("http://xxxx.com/s?w="..urlEncode(p), "GET", function(event)
if event.phase == "ended" then
--do something
end
end)