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 相关文章推荐
我的群发邮件程序
Oct 09 PHP
PHP实现图片简单上传
Oct 09 PHP
PHP 5.0对象模型深度探索之对象复制
Mar 27 PHP
国外比较好的几个的Php开源建站平台小结
Apr 22 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
php读取图片内容并输出到浏览器的实现代码
Aug 08 PHP
php引用传值实例详解学习
Nov 06 PHP
PHP创建/删除/复制文件夹、文件
May 03 PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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处理json时中文问题的解决方法
2011/04/12 PHP
php中explode与split的区别介绍
2012/10/03 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
接收键盘指令的脚本
2006/06/26 Javascript
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
python爬取网站数据保存使用的方法
2013/11/20 Python
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
python中如何打包用户自定义模块
2020/09/23 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
药品质量检测应届生求职信
2013/11/14 职场文书
缴纳养老保险的证明
2014/01/10 职场文书
社区工作者思想汇报
2014/01/13 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
优秀教师演讲稿
2014/05/06 职场文书
公司授权委托书范本
2014/09/18 职场文书
教师个人培训总结
2015/02/11 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android