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执行速度全攻略(上)
Oct 09 PHP
PHP新手上路(十三)
Oct 09 PHP
PHP的单引号和双引号 字符串效率
May 27 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
解析PHP实现下载文件的两种方法
Jul 05 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
php去除头尾空格的2种方法
Mar 16 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
Zend Framework入门应用实例详解
Dec 11 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 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 autoload机制的详解
2013/06/09 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
Python面向对象编程之继承与多态详解
2018/01/16 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
Django实现内容缓存实例方法
2020/06/30 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
前台文员的岗位职责
2013/11/14 职场文书
校园招聘策划书
2014/01/09 职场文书
二年级语文教学反思
2014/02/02 职场文书
责任心演讲稿
2014/05/14 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
丧事答谢词大全
2015/09/30 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers