上面是一个比较通用的解决方案(据说xp+IE7会有问题,未验证)。
这个问题是在使用时遇到的,:
private function set_headers() { $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = $this->filename . ".xls"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20", $encoded_filename); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); //header("Content-Type: application/vnd.ms-excel;charset=UTF-8"); header("Content-Type: application/download");; if (preg_match("/MSIE/", $ua)) { header('Content-Disposition: attachment; filename="' . $encoded_filename . '"'); } else if (preg_match("/Firefox/", $ua)) { header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"'); } else { header('Content-Disposition: attachment; filename="' . $filename . '"'); } header("Content-Transfer-Encoding: binary "); }