当前位置: 代码迷 >> VFP >> vfp使用Msxml2.ServerXMLHTTP的乱码有关问题
  详细解决方案

vfp使用Msxml2.ServerXMLHTTP的乱码有关问题

热度:8276   发布时间:2013-02-26 00:00:00.0
vfp使用Msxml2.ServerXMLHTTP的乱码问题
oo = = newObject('Msxml2.ServerXMLHTTP')
oo.open('post','http://localhost/',.f.)
oo.send('')
?oo.responseText
显示: ???????
服务器端页面返回在浏览器中是“服务器已成功启动”

说明:不想在iis中设置 setchar='utf-8' ,因为用的iis启动器不支持该命令。

comprop(oo,'UTF8',1) && 虽然显示汉字还是乱码。

------解决方案--------------------------------------------------------
Msxml 默认是按 utf-8 来解码的,如果你的网页是用 gb2312 来编码并且包含中文字符的话,收到的 responseText 经过它解码后就变成了乱码。

避免这种乱码问题的最好方法是页面声明为 utf-8 编码,就是 head 部分这条语句:
<meta HTTP-EQUIV="Content-Type" Content="text/html; charset=utf-8">
保存这个 asp 或 html 文件时也一定要用与声明相同的编码格式(utf-8)来保存。

当然有时候页面不是你写的,或者你根本无权做这种编码转换

要知道返回的数据除了 responseText 外,还有一个未经解码的原始数据 responseBody !
如果你确信服务端发回的数据是 gb2312 编码的话,直接用 responseBody 就可以了

oo = newObject('Msxml2.ServerXMLHTTP')
oo.open('POST','http://localhost/',.f.)
oo.send('')
? ''+oo.responseBody