找回密码
 加入
搜索
查看: 6244|回复: 10

[网络通信] INetGetSource获取内容后,StringInStr匹配不到?

  [复制链接]
发表于 2015-3-9 19:42:43 | 显示全部楼层 |阅读模式
本帖最后由 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
        
 
 
发表于 2015-3-9 20:41:26 | 显示全部楼层
目测是编码问题,估计_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)
 楼主| 发表于 2015-3-9 21:06:34 | 显示全部楼层
本帖最后由 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  这么奇怪。。
发表于 2015-3-10 21:50:04 | 显示全部楼层
回复 3# user11


    源代码明明是UTF8的
发表于 2015-3-10 22:19:06 | 显示全部楼层
回复 4# haijie1223

请教,是从哪儿知道源代码是UTF8的?
发表于 2015-3-11 17:07:55 | 显示全部楼层
回复 5# wangms


    打开  http://qzone.qq.com/  的网页看下源代码就可以了。
<html>
        <head>
                <meta charset="UTF-8" />
                <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
。。。。
发表于 2015-3-11 21:12:29 | 显示全部楼层
回复 6# haijie1223

3Q!............
发表于 2015-3-12 01:43:02 | 显示全部楼层
不过楼主提出的问题确实奇怪啊,哪位能说说原因。。
发表于 2015-3-12 20:29:42 | 显示全部楼层
回复 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)
发表于 2015-3-12 21:33:21 | 显示全部楼层
回复 9# haijie1223

谢谢老师的耐心解答,已搜到有关讨论的帖子,挺有意思的。
 楼主| 发表于 2015-3-13 09:24:56 | 显示全部楼层
本帖最后由 user11 于 2015-3-13 09:28 编辑

谢谢楼上几位的热烈讨论,,又get了新知识,,UTF-8编码有道理,,,可是chrome打开我那个连接,却必须选GBK编码,甚是奇怪,,不仅圈,还有小,字等。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-29 19:36 , Processed in 0.083904 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表