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面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
一步一步学习PHP(3) php 函数
Feb 15 PHP
php基础教程 php内置函数实例教程
Aug 21 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
php中的strpos使用示例
Feb 27 PHP
PHP获取中英混合字符串长度的方法
Jun 07 PHP
php实现统计网站在线人数的方法
May 12 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
PHP中模糊查询并关联三个select框
Jun 19 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 PHP
PHP耦合设计模式实例分析
Aug 08 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数据文件缓存类汇总
2014/12/05 PHP
php中session定期自动清理的方法
2015/11/12 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
五一手机促销方案
2014/03/08 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
产品质量保证书范本
2015/02/27 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android