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中的Class的几点个人看法
Oct 09 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
Apr 12 PHP
IP攻击升级,程序改进以对付新的攻击
Nov 23 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
win10环境PHP 7 安装配置【教程】
May 09 PHP
Yii2数据库操作常用方法小结
May 04 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP getName()函数讲解
Feb 03 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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 has encountered an Access Violation
2007/01/15 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
Python包和模块的分发详细介绍
2020/06/19 Python
python批量修改交换机密码的示例
2020/09/22 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
送给程序员的20个Java集合面试问题
2014/08/06 面试题
旷课检讨书1000字
2014/02/14 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
迎国庆演讲稿
2014/09/05 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
怒海潜将观后感
2015/06/11 职场文书
Mysql事务索引知识汇总
2022/03/17 MySQL