用inet post multipart/form-data表单后取得返回数据

asyncyd 2010-05-28 09:51:18

Inet1.Execute Url, "POST", Value, strHead

Do Until Inet1.StillExecuting = False
superSleep 0.5
Loop
'从缓冲区取得命令返回的内容
lstReturn = Inet1.GetChunk(1024, icByteArray) '如果用icString类型会出错
strAll = BytesToBstr(lstReturn, "gb2312")
'==================================================
'函数名:BytesToBstr
'作 用:将获取的源码转换为中文
'参 数:Body ------要转换的变量
'参 数:Cset ------要转换的类型
'==================================================
Public Function BytesToBstr(Body() As Byte, Cset As String) As String
Dim Objstream As ADODB.Stream
Set Objstream = New ADODB.Stream
Objstream.Type = 1
Objstream.Mode = 3
Objstream.Open
Objstream.Write Body
Objstream.position = 0
Objstream.Type = 2
Objstream.CharSet = Cset
BytesToBstr = Objstream.ReadText
Objstream.Close
Set Objstream = Nothing
End Function


[我看了post的目标网页是gb2312,但是执行上面的代码后得到的strAll的值是一堆乱码:
? ?ks诺烮U0&?F麗lc=V??籰慓匼侦n?鲮?3獹0?F(??敛浞q0茤_舶颁颦\?rC?!
囋=Щg︾被??杤?忣缨汐?萦雉?簃鬣蠴鰈桭聿&韞n胛儝軝N▄0澽6碝唙頂博?d*亥讵?Z:烬YY扜m灰汵弿彠苹S??跊濦XYl?;m猦鍋飤?Q謙+'塾用毘蔇)耞 J欂
鄈W:?Uu,'篗t籹h睟d├顁睲&?B钃
i;7掞晡v蒖趤eF?柀7疂?{姣?=;粁n犴镃+?qf崛茚?框茐鵖??u嵛粼骞wo_緓崴c颩Ou^黖秚燐汐G??2伏胗7"l喆當IN>@&?砲 ? 嬆*榡橹邦畗奿)#?搶A?0dUZ橴爮康H荾麊FI?鍔b珁M$鍻鄫Myc啓d?梴jy$mc?揟??zz嫋瘱婴ㄚ啓辭メq傩SР]?I授]輛a?厍苟_SX駺歖q磞毆愒bN.X€業礈l贀盕 眪癶匭摂r瞆VF垥?嚦)?窃熸蛘?姄}婈鞟㏕坁?&P綧胟眆AS,愪qS┤?n寓=?鮨蔜&?嘞埅鱆 ┰鏎?^9きAVuL1Qw~ 旓鬄ld鮅榇Q?s&?圧降坆F颀閶鏝?绝鷷w畖1w~yN€想:?]縬jv!\蟅F€禙??工娸珣捿氰暴?J詰Q???撵蚔&臡鳲?M-鯱攂D赣6*經??紼?A? 鲄猧fo臥K砄(?遥缕Bx漌
FL*;? 譽o诖Y轳!促廝y,bD攢`濄tO&忧習J?l枹i 饋I搨b?亘? 嗢尀W姘?兞.h[?`("腄^雂\赽毷dR囹拰梆/@?庈聋*U?0楸鞇^U但?岯?!鰒
Z桷稚E'?h[?


我又把gb2312换成了utf-8,得到了另一堆乱码:
=ks?IU0&Flc=V-*lG\n423G0?F("7q0?_\rC&!
=g类+v5??9?mOlF&yn?N{06Mv?4d*?+Z:YYGm?N?S9?@XYl/;meh~8Qt+'úD)_ J
kW:Uu,'MtshBdrM&4B
i;7vR?eF
7:{>=;xnC+.qf??S/8uwo_xcMOu^_t?G/927"lIN>@&
h
*j?}?i)#A=0dUZUH]FIbyM$OMycd{jy$Tmc(T(
zz??oqS]=I]vaX%?_SX@]qybN.XIl?F }hQrZVF)??7}AT^(&PMkfAS,qSn?=+lT&$ψJ @"^9AVuL1Qw~ ldIQs&z+RbFNw|1w~yN:.]qjv!\VFF$$?豩1J?Q7
V&uMOM-UbD6*" EA> ifoPKO(1?BxW
FL; uo?Y!?Py,bD`tO&J(lXi Ib?. ?W.h[2`("D^d\bdR/@?*U0鱤Z^U.B!v
ZE'h[


怎样才能显示出正确的内容呢?
...全文
143 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyx_ll 2010-06-08
  • 打赏
  • 举报
回复
Private Declare Function MultiByteToWideChar Lib "KERNEL32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long


Public Function UTF8_Decode(bUTF8() As Byte) As String '二进制解析为UTF8
Dim lRet As Long
Dim lLen As Long
Dim lBufferSize As Long
Dim sBuffer As String
Dim bBuffer() As Byte
lLen = UBound(bUTF8) + 1
If lLen = 0 Then Exit Function
lBufferSize = lLen * 2
sBuffer = String$(lBufferSize, Chr(0))
lRet = MultiByteToWideChar(65001, 0, VarPtr(bUTF8(0)), lLen, StrPtr(sBuffer), lBufferSize)

If lRet <> 0 Then
sBuffer = Mid(sBuffer, 1, lRet)
End If

UTF8_Decode = sBuffer
End Function

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧