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 相关文章推荐
ajax缓存问题解决途径
Dec 06 PHP
新手学PHP之数据库操作详解及乱码解决!
Jan 02 PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 PHP
php检查是否是ajax请求的方法
Apr 16 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
在php中设置session用memcache来存储的方法总结
Jan 14 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
Laravel框架验证码类用法实例分析
Sep 11 PHP
php实现分页功能的详细实例方法
Sep 29 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 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 session有效期问题
2009/04/26 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
EsLint入门学习教程
2017/02/17 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Python Queue模块详解
2014/11/30 Python
Python利用IPython提高开发效率
2016/08/10 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
新闻记者个人求职的自我评价
2013/11/28 职场文书
副总经理任命书
2014/06/05 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
植物园观后感
2015/06/11 职场文书
怎样写好工作计划
2019/04/10 职场文书
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL