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 相关文章推荐
一个简单的MySQL数据浏览器
Oct 09 PHP
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
如何提高MYSQL数据库的查询统计速度 select 索引应用
Apr 11 PHP
如何在PHP程序中防止盗链
Apr 09 PHP
用PHP为SHOPEX增加日志功能代码
Jul 02 PHP
php ajax 静态分页过程形式
Sep 02 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
浅析php如何实现爬取数据原理
Sep 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
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
JavaScript中数组继承的简单示例
2015/07/29 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
python3使用urllib模块制作网络爬虫
2016/04/08 Python
Python序列化基础知识(json/pickle)
2017/10/19 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
python实现微信防撤回神器
2019/04/29 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
移动端html5判断是否滚动到底部并且下拉加载
2019/11/19 HTML / CSS
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
军训教官感言
2014/03/02 职场文书
体育教师求职信
2014/05/24 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
技术员岗位职责
2015/02/04 职场文书
自主招生自荐信格式
2015/03/04 职场文书
员工加薪申请报告
2015/05/15 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android