我使用 luasocket 来获取一个包含汉字“开奖结果”的网页(页面本身编码为 charset="gb2312"),如下所示:
require "socket"
host = '61.129.89.226'
fileformat = '/fcopen/cp_kjgg_dfw.jsp?lottery_type=ssq&lottery_issue=%s'
function getlottery(num)
c = assert(socket.connect(host, 80))
c:send('GET ' .. string.format(fileformat, num) .. " HTTP/1.0\r\n\r\n")
content = c:receive('*l')
while content do
if content and content:find('开奖结果') then -- failed
print(content)
end
content = c:receive('*l')
end
c:close()
end
--http://61.129.89.226/fcopen/cp_kjgg_dfw.jsp?lottery_type=ssq&lottery_issue=2012138
getlottery('2012138')
不幸的是,它无法匹配预期的字符:
content:find('开奖结果') -- failed
我知道 Lua 能够找到 unicode 字符:
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> if string.find("This is 开奖结果", "开奖结果") then print("found!") end
found!
那我猜这可能是luasocket如何从网络上检索数据引起的。任何人都可以对此有所了解吗?
谢谢。