网络请求和非英语字符

我在使用Corona SDK的network.request,我构建了一个用于URL的字符串,但当这个字符串中带有空格、西班牙重音、阿拉伯字符、日本字符等时,它会给我一个错误(不良的URL)。我该如何解决这个问题?谢谢。

原文链接 https://stackoverflow.com/questions/9548275

点赞
stackoverflow用户312586
stackoverflow用户312586

从您构建的 URL 中删除字符串、西班牙字符等。URL 不能包含这些字符。

2012-03-03 18:07:37
stackoverflow用户221509
stackoverflow用户221509

更好的方法不是直接删除字符,而是使用 百分号编码 对 URL 进行转义。由于 Lua 仅支持 8 位字符串,我猜测国际字符被编码成了类似 UTF-8 的格式,而且你的服务器支持它。那么,你可以使用 Programming in Lua 中的以下函数对 URL 进行 escape

function escape (s)
  s = string.gsub(s, "([&=+%c\128-\255])", function (c)
        return string.format("%%%02X", string.byte(c))
      end)
  s = string.gsub(s, " ", "+")
  return s
end
print(escape("http://server/aáäbcčdďeé..."))
--> http://server/a%C3%A1%C3%A4bc%C4%8Dd%C4%8Fe%C3%A9...
2012-03-03 23:09:30