INetGetSource获取内容后,StringInStr匹配不到?
本帖最后由 user11 于 2015-3-9 20:26 编辑求助,代码如下,GBK编码,奇怪的问题,研究了半天没搞明白,msgbox 直接显示返回$ok可以正常显示出汉字,,
“圈”汉字为什么匹配不到呢??
如果用xmlhttp 可以匹配到,但是msgbox 不能正常显示汉字,这是怎么回事??》
$xmlhttp = ObjCreate("Microsoft.XMLHTTP")
$xmlhttp.open("GET", $url, False)
$xmlhttp.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded")
$xmlhttp.setRequestHeader("Cache-Control", "no-cache")
$xmlhttp.setRequestHeader("Accept-Language", "zh-CN,zh")
$xmlhttp.setRequestHeader("Accept", "*/*")
$xmlhttp.send()#include <INet.au3>
$url = "http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=273674753"
$ok = _INetGetSource($url)
If StringInStr($ok, "圈") Then
MsgBox(0, 0, $ok)
EndIf
目测是编码问题,估计_INetGetSource没有判断源代码的编码直接按照Ansi处理了。#include <INet.au3>
$url = "http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=273674753"
$ok =_INetGetSource($url)
$ok = BinaryToString(StringToBinary($ok),4)
If StringInStr($ok, "圈") Then MsgBox(0, 0, $ok) 本帖最后由 user11 于 2015-3-9 21:15 编辑
回复 2# haijie1223
谢谢,,可是浏览器查看代码的时候,,GB2312才能显示啊,,为什么要转UTF-8呢,好奇怪。。msgbox 正常显示汉字,,
inetgetsource($url,0)过不了
SciTE 程序版本:3.3.6到底是要 ANSI还是要 utf-8,,,utf8 msgbox 汉字不显示,ansi可以显示,但是stinginstr竟然要utf8这么奇怪。。 回复 3# user11
源代码明明是UTF8的 回复 4# haijie1223
请教,是从哪儿知道源代码是UTF8的? 回复 5# wangms
打开http://qzone.qq.com/的网页看下源代码就可以了。<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
。。。。
回复 6# haijie1223
3Q!............ 不过楼主提出的问题确实奇怪啊,哪位能说说原因。。 回复 8# wangms
没有找到原因,难道是bug?#AutoIt3Wrapper_Run_Debug_Mode=y
$sHtml="圈"
If StringInStr($sHtml, "圈") Then MsgBox(0, 0, $sHtml)换成其他汉字就可以了,或者在代码中加入其他汉字也可以了。#AutoIt3Wrapper_Run_Debug_Mode=y
$sHtml="汉字圈"
If StringInStr($sHtml, "圈") Then MsgBox(0, 0, $sHtml) 回复 9# haijie1223
谢谢老师的耐心解答,已搜到有关讨论的帖子,挺有意思的。 本帖最后由 user11 于 2015-3-13 09:28 编辑
谢谢楼上几位的热烈讨论,,又get了新知识,,UTF-8编码有道理,,,可是chrome打开我那个连接,却必须选GBK编码,甚是奇怪,,不仅圈,还有小,字等。。。。
页:
[1]