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 相关文章推荐
VML绘图板②脚本--VMLgraph.js、XMLtool.js
Oct 09 PHP
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
Jun 08 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
php中spl_autoload详解
Oct 17 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
PHP中的浅复制与深复制的实例详解
Oct 26 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python正则表达式及使用正则表达式的例子
2018/01/22 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
python实现log日志的示例代码
2018/04/28 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
一些关于MySql加速和优化的面试题
2014/01/30 面试题
大专生工程监理求职信
2013/10/04 职场文书
写好自荐信的技巧
2013/11/08 职场文书
实习生体会的自我评价范文
2013/11/28 职场文书
饭店工作计划书
2014/01/10 职场文书
爱心捐助倡议书
2014/05/19 职场文书
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL