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 cookie 登录验证示例代码
Mar 16 PHP
php生成随机密码的三种方法小结
Sep 04 PHP
php函数之子字符串替换 str_replace
Mar 23 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
PHP基础知识回顾
Aug 16 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
ThinkPHP登录功能的实现方法
Aug 20 PHP
php中的常用魔术方法汇总
Feb 14 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 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下一个非常全面获取图象信息的函数
2008/11/20 PHP
PHP 学习路线与时间表
2010/02/21 PHP
php curl模拟post请求小实例
2013/11/13 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
Python中的数学运算操作符使用进阶
2016/06/20 Python
Python守护线程用法实例
2017/06/23 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
基于Python List的赋值方法
2018/06/23 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
会计自我鉴定
2013/11/02 职场文书
小学数学教学反思
2014/02/02 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
Python编程源码报错解决方法总结经验分享
2021/10/05 Python
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android