PHP附件下载中文名称乱码的解决方法


Posted in PHP onDecember 17, 2015

本文实例讲述了PHP附件下载中文名称乱码的解决方法。分享给大家供大家参考,具体如下:

PHP中,如果要下载的文件名称为中文,则会出现文件标题乱码。

此时就需要对标题进行编码,也就是说先进性urlencode,然后再放入header,然后问题就解决了。

$filename = urlencode("下载文档");
header ( "Content-disposition: attachment; filename=$filename.xls" );

网上说,在RFC2231的定义里面, 多语言编码的Content-Disposition应该这么定义:

Content-Disposition: attachment; filename*="utf8''%E6%B5%8B%E8%AF%95.html"

即:

filename后面的等号之前要加 *
filename的值用单引号分成三段,分别是字符集(utf8)、语言(空)和urlencode过的文件名。

所以这时应该对文件名进行url编码转换 ,使用php的urlencode很轻松就搞定了

$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 . '"');
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php中使用接口实现工厂设计模式的代码
Jun 17 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 PHP
php定时执行任务设置详解
Feb 06 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
PHP文件上传类实例详解
Apr 08 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
PHP抽象类和接口用法实例详解
Jul 20 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 29 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 #PHP
php提交post数组参数实例分析
Dec 17 #PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 #PHP
PHP响应post请求上传文件的方法
Dec 17 #PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
Dec 17 #PHP
通过PHP简单实例介绍文件上传
Dec 16 #PHP
PHP上传文件参考配置大文件上传
Dec 16 #PHP
You might like
基于php使用memcache存储session的详解
2013/06/25 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
PHP实现获取图片颜色值的方法
2014/07/11 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
php批量修改表结构实例
2017/05/24 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
jQuery跨域问题解决方案
2015/08/03 Javascript
Jquery树插件zTree实现菜单树
2017/01/24 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
基python实现多线程网页爬虫
2015/09/06 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Python字典的核心底层原理讲解
2019/01/24 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
利用指针变量实现队列的入队操作
2012/04/07 面试题
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
党支部审查意见
2015/06/02 职场文书
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL