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 文件状态缓存带来的问题
Dec 14 PHP
php警告Creating default object from empty value 问题的解决方法
Apr 02 PHP
yii操作session实例简介
Jul 31 PHP
百度实时推送api接口应用示例
Oct 21 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 10 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/02/25 PHP
php include类文件超时问题处理
2015/02/06 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
JS随机密码生成算法
2019/09/23 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
下载给定网页上图片的方法
2014/02/18 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
python爬取个性签名的方法
2018/06/17 Python
python可视化实现代码
2019/01/15 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
Python如何实现远程方法调用
2020/08/07 Python
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
大学三年的自我评价
2013/12/25 职场文书
歌唱比赛获奖感言
2014/01/21 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
庆祝国庆节标语
2014/10/09 职场文书
汽车销售合同文本
2019/08/08 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python
Golang map映射的用法
2022/04/22 Golang