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 相关文章推荐
模仿OSO的论坛(五)
Oct 09 PHP
php session 预定义数组
Mar 16 PHP
PHP加速 eAccelerator配置和使用指南
Jun 05 PHP
mayfish 数据入库验证代码
Apr 30 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
php简单防盗链实现方法
Jul 29 PHP
Yii CGridView用法实例详解
Jul 12 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 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实现二分搜索树
2020/10/25 PHP
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
python字符串替换的2种方法
2014/11/30 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
python中defaultdict的用法详解
2017/06/07 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
python实现石头剪刀布程序
2021/01/20 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
旅游管理毕业生自荐信
2013/11/05 职场文书
管理科学大学生求职信
2013/11/13 职场文书
经典优秀个人求职信分享
2013/12/12 职场文书
锦旗标语大全
2014/06/23 职场文书
高中同学会活动方案
2014/08/14 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
公积金具结保证书
2015/05/11 职场文书
暑假打工感想
2015/08/07 职场文书
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers
Golang gRPC HTTP协议转换示例
2022/06/16 Golang