idhttp下载excel文件,打开后都是乱码,用excel打开却能正常显示(88分)

  • 主题发起人 主题发起人 machcat
  • 开始时间 开始时间
M

machcat

Unregistered / Unconfirmed
GUEST, unregistred user!
各位有什么办法吗?
 
没明白什么意思?是下载后的EXCEL文件能用EXCEL打开,还是原始的能打开
如果是下载后的用EXCEL能打开,就调用CREATEOLEOBJECT
 
怪我没说明白,是在浏览器IE中下载后的EXCEL文件能用EXCEL打开,用idhttp下载的打开后都是乱码
 
你是怎么用的?

var
DownLoadFile:TFileStream;
beginio
DownLoadFile:=TFileStream.Create('c:/aa.rar',fmCreate);
IdHTTP1.Get('http://www.sina.com.cn/download/aa.rar',DownLoadFile);
DownLoadFile.Free;
end;
 
实在不行不用IDHTTP,用API
uses UrlMon;
function DownloadFile(Source, Dest: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
except
Result := False;
end;
end;

if DownloadFile('http://www.1.com/1.zip, 'c:/1.zip') then
ShowMessage('Download succesful')
else ShowMessage('Download unsuccesful')
 
madeagle:你说的这两种方法我都用过,结果还是一样
 
给我个网址,我帮你试试
用UTF8Decode呢?
 
我亲自试了一下,两种方法都能直接下载EXCEL,而且不会出现乱码
DELPHI7+WINXP+IIS
 
感谢回复
http://bill.finance.sina.com.cn/bill/trade_item_download.php?stock_code=sh600xxx
亦即下载新浪股票成交明细,用idhttp下载后打开都是乱码,用IE则不会。
 
procedure TForm1.btn1Click(Sender: TObject);
var
DownLoadFile:TFileStream;
begin
DownLoadFile:=TFileStream.Create('c:/aa.XLS',fmCreate);
IdHTTP1.Get('http://bill.finance.sina.com.cn/bill/trade_item_download.php?stock_code=sh600xxx',DownLoadFile);
DownLoadFile.Free;
end;

经我测试,非常正常,一点乱码都不会有
 
唉,一模一样的代码,试了N次,仍是乱码。madeagle兄,你再换几个股票代码试试
 
以下IDHTTP抓包
GET /bill/trade_item_download.php?stock_code=sh600xxx HTTP/1.1
Content-Type: text/html
Host: bill.finance.sina.com.cn
Accept:text/html, */*
User-Agent: Mozilla/3.0 (compatible; Indy Library)

以下IE下载抓包:
GET /bill/trade_item_download.php?stock_code=sh600xxx HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, application/x-shockwave-flash, */*
Accept-Language: zh-cn
UA-CPU:x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE7.0; Windows NT5.1)
Host: bill.finance.sina.com.cn
Connection: Keep-Alive
Cookie: ...........


你在idhttp中增加Accept-Language: zh-cn应该就可以了 语言不同估计就会乱码
如果还不行, 按照IE的GET在idhttp中发送一模一样的请求就OK
简单的代码就不用手把手帮你写了吧~~~
 
我用的DELPHI7自带的INDY组件,系统是雨林木风GHOSTXP96N
我试了几个代码,都没有乱码,不知道你的是什么问题呀
用别的机器试下看行不行,实在不行换系统吧,要么你尝试一下冰力的代码吧
 
madeagle兄,我照你上面所述重新设置了idhttp,但下载的xls依然是乱码,不知是何因。在IE中下载则完全正常,我的是IE6.0,你的测试程序能发给我试试吗?
我的QQ:491461
 
我的系统是深度版XP
 
后退
顶部