使用INET控件采集网页时出现的字符问题!在线等待答案

jacksoft 2007-11-19 11:21:37
我的接收数据部分代码,包大小是1024:
sTmp = INET(Index).GetChunk(1024, icString)
If Len(sTmp) = 0 Then
bDone = True
End If
Do While Not bDone
Get_Data = Get_Data + sTmp
sTmp = INET(Index).GetChunk(1024, icString)
If Len(sTmp) = 0 Then
bDone = True
End If
Loop

采出来的内容变成了这样

</STRONG></A></P>
<P>  拉斯维加斯一直被世人认定是成人的奇幻世界。这个地方是一个不折不扣的不夜赌城,它存在的目地就是为了赌,除此之处谡飧龆嘣某鞘欣铮阑亩杉俾霉荨⒅挠槔纸谀俊⒘鄣呒兜耐聿汀⑹澜缂兜母叨蚯虺 捕伎梢栽谡饫镎业健?/P>
<P align=center><IMG style="BORDER-LEFT-COLOR: #999999;

当我把包大小改成10240的时候这里的字符就正常了,因此我怀疑是双字节字符在分包时被分割了,请问有办法解决不?谢谢
...全文
117 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacksoft 2007-11-21
  • 打赏
  • 举报
回复
我倒感觉比icstring处理得快
lifengid 2007-11-20
  • 打赏
  • 举报
回复
经我测试没有 StrConv(aAll, vbUnicode) CPU降下70%
lifengid 2007-11-20
  • 打赏
  • 举报
回复
哥们的方法确实不错,但我仔细检查,如果使用icstring方式,直接获得串,cpu很低。
如果使用二进制方式,增加了strconv转换,cpu高达100%。

icstring有很多bug,读不了很多内容

有哪位大侠能解决??
jacksoft 2007-11-19
  • 打赏
  • 举报
回复
可以了,我都快哭了,谢谢,麻烦兄弟去
http://topic.csdn.net/u/20071119/12/8e51d888-20a1-449a-ad4b-0b2e68a076c5.html
回贴,我给分
Tiger_Zhao 2007-11-19
  • 打赏
  • 举报
回复
改用二进制传输试试
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Private Sub Command1_Click()
Dim aAll() As Byte, aBuf() As Byte
Dim lAllLen As Long, lBufLen As Long

Do While True
aBuf = Inet(Index).GetChunk(1024, icByteArray)
lBufLen = UBound(aBuf) + 1
If lBufLen <= 0 Then Exit Do

ReDim Preserve All(lAllLen + lBufLen - 1)
CopyMemory aAll(lAllLen), aBuf(0), lBufLen
lAllLen = lAllLen + lBufLen
Loop
stmp = StrConv(aAll, vbUnicode)
End Sub

1,502

社区成员

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

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