有时,Corona 的 网络 库用户面临的一个挑战是如何正确编码 URL。让我们来看一个例子
https://www.google.com/search?q=coronalabs&ie=utf-8&client=firefox-a&channel=sb
这个 URL 最初可以分解成以下几个方面
https://
。www.google.com
。/search
。接下来是一系列?
) 开头,每对之间用与符号 (&
) 分隔。每个键及其关联的值用等号 (=
) 分隔。在本例中,我们有以下
q
= coronalabs
ie
= utf-8
client
= firefox-a
channel
= sb
理解 URL 的组成部分以及/
、.
、?
和 &
一个
+
)。%
) 为前缀的十六进制值。为了说明这个概念,让我们考虑另一个 URL
https://www.google.com/search?q=Corona tutorials & guides
正确编码后,URL 如下所示
https://www.google.com/search?q=Corona+tutorials+%26+guides
在 Corona 的 网络 库中使用 URL 时,您有责任对其进行正确编码,以便它可以通过 Internet 安全传输。幸运的是,一个简单的 Lua 函数可以为我们完成这项工作
function string.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
使用此函数,我们可以这样编码 URL
local searchQuery = "Corona tutorials & guides" local URL = "https://google.com/q=" .. string.urlEncode( searchQuery )
或者,由于我们将此函数添加到 Corona 的
local searchQuery = "Corona tutorials & guides" local URL = "https://google.com/q=" .. searchQuery:urlEncode()
就是这样!正确编码 URL 后,我们可以在 Corona 的 网络 函数中使用它来发出网络请求,将 URL 传递给 native.newWebView(),或将其与任何其他需要 URL 的 API/函数一起使用。
总而言之,请记住,如果 URL 包含空格、符号或二进制数据(如