本帖最后由 kxing 于 2011-5-13 01:25 编辑
我利用winhttp的post提交中文到服务器处理时总是出现乱码。
但是如果php自身输出的中文获取回来是正常的,提交上去就乱码。
不管服务器上的php程序文件是utf8或gbk编码都无效。
php代码很简单,就是利用post方式接收提交上来的name并输出。
可是在使用winhttp提交上去后就变成乱码了,求高手帮帮忙。。。
我估计应该就是提交的传输过程中改变编码了。
万分感谢!!!!
au3提交表单函数:#include <winhttp.au3>
$text=_winhttp("sky808.gotoip1.com/test-gbk.php?name=用户名")
msgbox(0,'',$text)
func _winhttp($url)
$aURL=stringregexp($url,"^(?:http\://)?([^/]+)([^\?]*)\?(.+)$",3)
if @error then return false
$hOpen=_WinHttpOpen();建立会话
if @error then return false
$hConnect=_WinHttpConnect($hOpen,$aURL[0]);建立连接
If @error Then
msgbox(16,"错误","连接服务器超时,请稍后再试!")
_WinHttpCloseHandle($hOpen)
return false
endif
$hRequest=_WinHttpOpenRequest($hConnect,"POST",$aURL[1]);建立请求
if @error then
msgbox(16,"错误","建立请求失败,请稍后再试!")
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
return false
endif
;发送请求
_WinHttpSendRequest($hRequest, "Content-Type: application/x-www-form-urlencoded",$aURL[2])
if @error then
msgbox(16,"错误","发送请求失败,请稍后再试!")
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
return false
endif
;等待应答
_WinHttpReceiveResponse($hRequest)
local $result=""
if _WinHttpQueryDataAvailable($hRequest) then;检查是否有可用于读取的数据
while 1
$result&=_winhttpreaddata($hRequest)
if @error then exitloop
Wend
else
msgbox(16,"错误","没有可用的数据!")
endif
;关闭句柄
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
return $result
endfunc;winhttp
php代码:<?
echo "php自身输出的数据:用户名,提交上来的数据:".$_POST['name'];
?>
服务器上还有个utf8版的:text-utf8.php |