PHP文件下载 浏览器显示文件名乱码问题

<?php
$filename = "下载文件名";
$filesize = filesize('文件地址'); //获得文件大小
header('Pragma: public');
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Content-Transfer-Encoding: binary');
header('Content-Encoding: none');
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-length: '.$filesize);
?>

这样在弹出文件下载框时,显示的文件名在不同的浏览器下面是不一样的。有的是乱码,有的是空白。
所以文件名统一使用utf-8编码,然后针对ie浏览器进行一次rawurlencode编码。
把以下代码放在header之前

if (preg_match(/MSIE/,$_SERVER['HTTP_USER_AGENT'])) {
        $filename = rawurlencode($filename);
}
此条目发表在 PHP, 网页制作 分类目录,贴了 , 标签。将固定链接加入收藏夹。

PHP文件下载 浏览器显示文件名乱码问题》有 1 条评论

  1. lunasjz 说:

    多谢了,网上找了个遍,还是这个方法最简单。非常优美的解决了我的问题。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">