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 存取 MySQL 数据库的一个例子
Oct 09 PHP
在PHP中养成7个面向对象的好习惯
Jan 28 PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
基于php权限分配的实现代码
Apr 28 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
PHP实现限制IP访问的方法
Apr 20 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 PHP
laravel 解决Validator使用中出现的问题
Oct 25 PHP
PHP 超级全局变量相关总结
Jun 30 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 addslashes 函数详细分析说明
2009/06/23 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
Laravel 5 学习笔记
2015/03/06 PHP
php限制ip地址范围的方法
2015/03/31 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
禁止按回车键提交表单的方法
2015/06/11 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
python实现用户登录系统
2016/05/21 Python
python的多重继承的理解
2017/08/06 Python
使用python生成目录树
2018/03/29 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
Django实现celery定时任务过程解析
2020/04/21 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
Python collections模块的使用方法
2020/10/09 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
html5的localstorage详解
2017/05/09 HTML / CSS
师范大学音乐表演专业求职信
2013/10/23 职场文书
高中生毕业学习总结的自我评价
2013/11/14 职场文书
2014庆六一活动方案
2014/03/02 职场文书
教学评估实施方案
2014/03/16 职场文书
学校端午节活动方案
2014/08/23 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
认识实习感想
2015/08/10 职场文书
市级三好生竞选稿
2015/11/21 职场文书