URL参数是corona sdk中格式错误的URL

时间:2016-02-21 23:09:57

标签: url corona

如果network.request的url字符串在Corona SDK中包含中文字符,则控制台将记录“URL参数格式错误的URL”。例如,如果url字符串为“http://xxxx.com?name=张三&age=23”,则会出现问题,但如果汉字被英文字符替换,一切都会好的。怎么可以解决?

1 个答案:

答案 0 :(得分:0)

您应该在GETPOST之前对中文字符进行编码。 这里有一个例子:

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)