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 相关文章推荐
Smarty+QUICKFORM小小演示
Feb 25 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
PHP生成压缩文件实例
Feb 07 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
php自定义扩展名获取函数示例
Dec 12 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中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
js切换div css注意的细节
2012/12/10 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
基于jquery实现省市联动效果
2015/11/23 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
Cpy和Python的效率对比
2015/03/20 Python
Python图算法实例分析
2016/08/13 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
python openpyxl模块的使用详解
2021/02/25 Python
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
行政文员岗位职责
2013/11/08 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
仲裁协议书
2014/09/26 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
永远是春天观后感
2015/06/12 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
MySQL 分页查询的优化技巧
2021/05/12 MySQL
详解PHP Swoole与TCP三次握手
2021/05/27 PHP