2
을 사용하여 한자 : 불행하게도HTTP GET 내가 한자 "开奖 结果"(페이지 자체가 문자 집합 = "GB2312"로 인코딩), 아래가 포함 된 웹 페이지를 GET luasocket를 사용 luasocket
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')
을
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> if string.find("This is 开奖结果", "开奖结果") then print("found!") end
found!
,536,913,632 : 나는 루아 유니 코드 문자를 발견 할 수있는 것을 알고
content:find('开奖结果') -- failed
: 그것은 예상 문자와 일치하지 10
그러면 luasocket이 웹에서 데이터를 검색하는 방법이 원인 일 수 있습니다. 누군가 이것에 관해 약간의 불을 흘릴 수 있었느냐?
감사합니다.
감사 DDA를 밀어 것입니다, 그래서에 대해 일치하는 시도 UTF - 8로 인코딩 된 페이지, 그것은 acutally 작동합니다. 그래서 작동하려면 GB2312로 인코딩 된 페이지를 UTF-8로 변환해야합니다. 맞습니까? 그러한 작업에 사용할 수있는 라이브러리가 있는지 알고 있습니까? (나는 slnunicode에 대한 빠른 견해를 가지고 있는데, 번역 번역을 지원하지 않는 것 같다.) –
사실, .find()는 utf-8로 인코딩 되었기 때문에 utf-8 코드 포인트를 찾는다. 동작은 스크립트의 인코딩에 따라 다릅니다. –
실제로. 문자열 "开奖 结果"는 나머지 파일과 동일한 인코딩으로 인코딩됩니다. 명령 줄에서'hexdump -C myscript.lua'를 실행하여 직접 확인하십시오. 반면에,'content' 변수의 내용은 원본 HTML 페이지가 어떤 인코딩이던간에있을 것입니다. – dda