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代码
Mar 03 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
PHP多线程之内部多线程实例分析
Mar 09 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
PHP实时统计中文字数和区别
Feb 28 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 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常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
详解Nodejs内存治理
2018/05/13 NodeJs
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
js回调函数仿360开机
2019/12/26 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
2011/03/13 Python
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
Python中optparser库用法实例详解
2018/01/26 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
师范毕业生自荐信
2013/10/17 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
七一党日活动总结
2014/07/08 职场文书
公司出纳岗位职责
2015/03/31 职场文书
2015年财政局工作总结
2015/05/21 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
特种设备安全管理制度
2015/08/06 职场文书
党员理论学习心得体会
2016/01/21 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL