header('content-type: application/octet-stream;'); 
header("Content-Transfer-Encoding: binary");
header('content-disposition: attachment;filename=test.txt');
header('content-length: '.filesize('a.txt'));
$fp = fopen('a.txt','r');
while(false==feof($fp))
{
$data = fread($fp,8192);
echo $data;
}
fclose($fp);我用上面代码实现下载功能,下载后的txt文件里中文都变成了乱码,怎么解决?
还有的是如果直接给出URL:http://www.xxx.com/a.txt的话浏览器会直接打开a.txt,我不想让它直接打开,
而是弹出下载框,用PHP怎么实现?大侠路过的帮下忙~~

解决方案 »

  1.   

    第一句改为 header("Content-type: unknown/unknown");可直接下载.下载后用记事本打开,应该是不乱码的.也可加一句 header('Content-Type:text/html;charset=gb2312'); 在前面,直接打开也不乱码
      

  2.   

    不行呀,header("Content-type: unknown/unknown"); 时只有下载编码为UTF-8的TXT文件不是乱码,而其它编码的还是乱码。有没什么办法下载任何编码的TXT都不是乱码?
      

  3.   

    你txt文件,怎么能指明为
    header('content-type: application/octet-stream;'); 
    header("Content-Transfer-Encoding: binary"); 
    呢?
      

  4.   

    我也用header("content-type: text/plain"); 试过,
    结果GB2312编码的TXT是乱码,UTF-8编码的正常下载.用没什么办法让所有编码格式的TXT下载后都正常显示?