注册 登录
编程论坛 VFP论坛

httpserver 返回 汉字认不到?有什么高级办法不?

ljb8864 发布于 2023-08-12 12:22, 832 次点击
TEXT TO XmlStr  TEXTMERGE NOSHOW PRETEXT 3
Username=%D5%C5%C8%FD&Password=123&Submit=%B5%C7%C2%BC
ENDTEXT

strWebserviceURL ="http://192.168.11.14"

objHTTP.Open("POST", strWebserviceURL,.F.) &&'默认是POST方式

objHTTP.setRequestHeader("Content-Type", "application/text")

objHTTP.send(XmlStr)    &&'XmlInput是Ws的参数
r= STRCONV( objHTTP.responseTEXT,11)



<html lang="zh-cn"><body><form name="Login" action="" method="get">
????<input class="input" type="text" name="Username" value="??" size="20" />
??<input class="input" type="password" name="Password" value="123" size="20" />
<input class="btn" type="submit" name="Submit" value="???" style="width:80px" />
</form></body></html>

但是使用_cliptext=objHTTP.responseTEXT 则汉字正常
<html lang="zh-cn"><body><form name="Login" action="" method="get">
用户名<input class="input" type="text" name="Username" value="张三" size="20" />
密码<input class="input" type="password" name="Password" value="123" size="20" />
<input class="btn" type="submit" name="Submit" value="登录" style="width:80px" />
</form></body></html>
7 回复
#2
吹水佬2023-08-12 12:31
r= objHTTP.responseTEXT
#3
csyx2023-08-12 12:46
如果你确定服务端返回的是 utf-8 编码串,要使用 responseBody 而不是 responseText 来解码
responseText 是已经被 vfp(按 ansi 方法)错误解码过的,responseBody 才是原始的
#4
ljb88642023-08-12 12:57
回复 2楼 吹水佬

r=  objHTTP.responseBody

有用?

[此贴子已经被作者于2023-8-12 13:00编辑过]

#5
吹水佬2023-08-12 14:20
以下是引用ljb8864在2023-8-12 12:57:56的发言:


r=objHTTP.responseBody

有用?

responseBody 是服务端发送的原始数据,UTF-8编码的较多。
responseTEXT 是经过VFP解析过的文本。
可以试试看:
r = STRCONV(objHTTP.responseBody,11)
r = objHTTP.responseTEXT
#6
ljb88642023-08-12 14:41
回复 5楼 吹水佬
可以了。使用BODY
#7
hsfisher2025-09-17 08:29
#8
whinda2025-09-23 00:55
还在写爬虫?obj.ResponseBody,也有可能是base64或其他的编码的,需要转码,最好预先设置一下请求头,accept和Content-Type
现在的网站好多有WAF防护,不管你是interneexplorer.application、microsoft.xmlhttp、msxml2.xmlhttp、msxml2.Serverxmlhttp、winhttp.winhttprequest.5.1还是内置WebView、Webview2统统没用,修改UA,写requestHeader,写cookie也没用的。

现在连Bing都用WAF防机器人了哦。
1