下载保存后,文件头多了 0D 0A,怎么才能保证不产生多余的字节呢?我的程序如下(平常用的是utf8编码,excel文件已经转换成gb2312编码了):
$fp = fopen($excelFile,"r");
header("Content-type: application/vnd.ms-excel;charset=gb2312");
header("Accept-Length: ".filesize($excelFile));
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: attachment; filename="'.basename($excelFile).'"');
// 输出文件内容
while(!feof($fp)) {
echo fread($fp,filesize($excelFile));
}
fclose($fp);
//@unlink($excelFile);
exit;

解决方案 »

  1.   

    如何转换?我的excel文件是utf8转成gb2312的,因为utf8的编码在windows下打开是乱码。
      

  2.   

    $fp = fopen($excelFile,'rb');
    结果也是一样,是否哪个包含文件中有多余空行的关系?我检查了一遍,包含文件中,多余的空行(<?php ?>外面的空行)已经删除了,还是一样的结果。
    另外:我的服务器用的是windows的平台,是否平台也有影响?
      

  3.   

    用 mb_convert_encoding 或者另外一个转码函数把内容转码成 gb2312 再输出应该就好了吧,前段时间用过~~~
      

  4.   

    0D是回车符号:\r
    0A是换行符号:\n试一下编码转换。直接:
    echo file_get_contents($excelFile);