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 mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
php 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
php flv视频时间获取函数
Jun 29 PHP
关于php curl获取301或302转向的网址问题的解决方法
Jun 02 PHP
表格展示无限级分类(PHP版)
Aug 21 PHP
php中操作memcached缓存进行增删改查数据的实现代码
Aug 15 PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 PHP
php生成图片缩略图的方法
Apr 07 PHP
PHP解密Unicode及Escape加密字符串
May 17 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 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
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
pyenv命令管理多个Python版本
2017/03/26 Python
python编程嵌套函数实例代码
2018/02/11 Python
pandas数值计算与排序方法
2018/04/12 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Django model select的多种用法详解
2019/07/16 Python
深入了解Python在HDA中的应用
2019/09/05 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
python 数据类型强制转换的总结
2021/01/25 Python
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
个人简历的自荐信
2013/10/23 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL
浅谈JS的原型和原型链
2021/06/04 Javascript
Java获取字符串编码格式实现思路
2022/09/23 Java/Android