20090210.xls是我在服务器上的一个文件,使用excel打开内容显示很正常;
然后我在PHP中使用如下代码进行下载,下载后打开文件却显示乱码(内容中不用中文也是显示乱码)
有人说好像是是BOM之类的问题,说要设置header的编码,我也试过了都不行,请问是怎么回事呢?$filename = "20090210.xls";
$file = fopen(PUBLIC_EXPORT_DIR.$filename,"r"); // 打开文件
Header("Content-type:application/octet-stream");
Header("Accept-Ranges:bytes");
header("Content-Type: application/msexcel");
Header("Accept-Length:".filesize(PUBLIC_EXPORT_DIR.$filename));
Header("Content-Disposition:attachment;filename=".$filename);
echo fread($file,filesize(PUBLIC_EXPORT_DIR.$filename));
fclose($file);
显示的如下这样一些东西。 邢唷??;? ??AB?=?r8X"1??Calibri1??Calibri1??Calibri1??Calibri1??Calibri1??Arial1??Calibri?0?General?? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €?? €??? ???? ? ?? ?D ??"? ???
T\US鱊(CQ)褢潣(CQ)罷
T膲<hBh廩瞫/e櫉9h罷
T/0W@W
Nwm鍂髼曐VP[焣哊韕譺b?S1*5媹r偵b墍~g*Na??RGrGr軘#曠p踁孴櫃爛藛|?闟IQfyrSmvY6?og藛c襳!炈?PN郹鰯3€?F?F孎m( 1r胈.^.^f? Q筽XT錧'?f苸h?1) 錯g:2009-02-10?[AB縹飴 錯g:2009-02-10-Nq\S飴縹 錯g:2009-02-10test 錯g:2009-02-10
??A}*+€?????&ffffff?'ffffff?(?)??"dXX333333?333333??
然后我在PHP中使用如下代码进行下载,下载后打开文件却显示乱码(内容中不用中文也是显示乱码)
有人说好像是是BOM之类的问题,说要设置header的编码,我也试过了都不行,请问是怎么回事呢?$filename = "20090210.xls";
$file = fopen(PUBLIC_EXPORT_DIR.$filename,"r"); // 打开文件
Header("Content-type:application/octet-stream");
Header("Accept-Ranges:bytes");
header("Content-Type: application/msexcel");
Header("Accept-Length:".filesize(PUBLIC_EXPORT_DIR.$filename));
Header("Content-Disposition:attachment;filename=".$filename);
echo fread($file,filesize(PUBLIC_EXPORT_DIR.$filename));
fclose($file);
显示的如下这样一些东西。 邢唷??;? ??AB?=?r8X"1??Calibri1??Calibri1??Calibri1??Calibri1??Calibri1??Arial1??Calibri?0?General?? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €??? €?? €??? ???? ? ?? ?D ??"? ???
T\US鱊(CQ)褢潣(CQ)罷
T膲<hBh廩瞫/e櫉9h罷
T/0W@W
Nwm鍂髼曐VP[焣哊韕譺b?S1*5媹r偵b墍~g*Na??RGrGr軘#曠p踁孴櫃爛藛|?闟IQfyrSmvY6?og藛c襳!炈?PN郹鰯3€?F?F孎m( 1r胈.^.^f? Q筽XT錧'?f苸h?1) 錯g:2009-02-10?[AB縹飴 錯g:2009-02-10-Nq\S飴縹 錯g:2009-02-10test 錯g:2009-02-10
??A}*+€?????&ffffff?'ffffff?(?)??"dXX333333?333333??
用这个试一下。
$filename = "20090210.xls";
Header("Content-type:application/octet-stream");
Header("Accept-Ranges:bytes");
Header("Accept-Length:".filesize(PUBLIC_EXPORT_DIR.$filename));
Header("Content-Disposition:attachment;filename=".$filename);
echo file_get_contents($filename);
Header("Content-type:application/force-download");
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize(PUBLIC_EXPORT_DIR.$filename));
readfile(PUBLIC_EXPORT_DIR.$filename);
exit;
我的也出现这个问题
原来为gb2312 ,转utf-8后,
本地可以,上传服务器就行了,乱码
所有下载资源均乱码
$file = fopen($file_path, "rb"); // 打开文件
Header('Content-type: application/octet-stream;charset=utf-8');
//Header("Content-type:application/force-download");
Header('Accept-Ranges:bytes');
Header('Accept-Length:' . filesize($file_path));
Header('Content-Disposition: attachment; filename="' . $row_source['oflname'].'"');
echo fread($file, filesize($file_path));
fclose($file);
exit;
改了一下,加了rb,
另外,由于是utf-8的
charset=utf-8'我觉得可能是服务器的问题
然后使用上面代码下载也还是乱码,真不知道是怎么回事?
开个.txt写个Hello进去
试试下载另外~做下载不需设charset
binary根本不会理会编码...
就读取发送我用我贴那个代码做下载...
什么档案,什么编码都可以zip,excel,word,txt都没问题