你的代码没有问题,是你的web server的问题
配置你的apache,把rar后缀的mime类型配置成 application/octet-stream

解决方案 »

  1.   

    这个不是编码问题,FireFox把下载的文件当成了文本文件处理,显示的是ASCII的二进制代码(这肯定是乱码),楼主的PHP文件要在顶部搞个文件头标($file_ext为文件类型,$file_name为文件名,$file_size为文件大小),这是直接下载的:header ('Content-type: application/'.$file_ext);
    header ("Expires: 0");
    header ("Pragma: no-cache");
    header ('Content-Disposition: attachment; filename='.$file_name.'');
    header ("Content-Length: ".$file_size);  
    readfile ($file_name);如果要同时显示页面(为RAR下载的),
    header("Content-type: application/rar");