彻底解决跨浏览器下PHP下载文件名中的中文乱码问题
2012-09-21 17:18
721 查看
<?php $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20", $encoded_filename); header('Content-Type: application/octet-stream'); 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 . '"'); } print 'ABC'; ?>
上面是一个比较通用的解决方案(据说xp+IE7会有问题,未验证)。
这个问题是在使用CI-Excel-Generation-Library时遇到的,解决办法如下:
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 "); }
相关文章推荐
- 跨浏览器PHP下载文件名中的中文乱码问题解决方法
- 解决跨浏览器下PHP下载文件名中的中文乱码问题
- 解决不同浏览器上中文文件名的下载乱码问题php验证可行的测试过ie ff 和chrome的
- 跨浏览器PHP下载文件名中的中文乱码问题解决方法
- [置顶] PHP解决浏览器 下载文件 中文名称乱码问题--兼容大多浏览器
- 跨浏览器PHP下载文件名中的中文乱码问题解决方法
- 解决不同浏览器上中文文件名的下载乱码问题
- PHP解决浏览器 下载文件 中文名称乱码问题--兼容大多浏览器
- 【转】彻底解决Asp.net文件下载(Response.WriteFile)时文件名的中文乱码和空格异常问题
- 解决PHP在IE浏览旗下载文件,中文文件名乱码问题
- 解决PHP在IE中下载文件,中文文件名乱码问题
- php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
- php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
- 使用Content-Disposition: attachment; filename=FILENAME,在Firefox浏览器中下载文件,文件名中文乱码问题解决。
- 解决PHP在IE浏览器下载文件,中文文件名乱码问题
- 解决PHP Header强制下载IE文件名中文乱码问题
- 解决PHP在IE浏览器下载文件,中文文件名乱码问题
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 文件下载 response.setHeader()下载中文文件名乱码问题 解决办法