$fileName = '用户信息登记表';
$encoded_filename = str_replace('+', '%20', urlencode($fileName));
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$encoded_filename.'.xls"');
header('Cache-Control: max-age=0');中文文件名在不同的浏览器下处理方式不同。原来我直接在filename中写了中文名字,在FireFox下没有问题,但是到IE下就是下载不了,提示文件找不到。后来采用了上述方法,在IE下是正常的,但是在FireFox下是url编码过后的文件名,怎样让两个浏览器下都显示正常的文件名?

解决方案 »

  1.   

    把你页面的编码设成和$fileName一致了。用iconv把你的文件名也强制转换下。
      

  2.   

    header提定charset,然后将中文转成对应指定的charset!
      

  3.   

    我的PHP文件本身的编码是UTF-8的。$fileName = '用户信息登记表';
    //$encoded_filename = str_replace('+', '%20', urlencode($fileName));
    $encoded_filename = iconv('UTF-8', 'UTF-8', $fileName);
    header('Content-Type: application/vnd.ms-excel;charset=UTF-8');
    header('Content-Disposition: attachment;filename="'.$encoded_filename.'.xls"');
    header('Cache-Control: max-age=0');是这样的吗?在IE下不行。
      

  4.   

    问题找到解决方法了,对于不同的浏览器发送不同的header。
    参考地址:http://www.abcdown.net/InfoView/Article_311888.html