PHP附件下载中文名称乱码的解决方法

 更新时间:2015年12月17日 15:19:18   作者:龙鱼鹿  
这篇文章主要介绍了PHP附件下载中文名称乱码的解决方法,分析了中文乱码形成的原因及对应的编码转换方法,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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生成数组再传给js的方法

    PHP生成数组再传给js的方法

    这篇文章主要介绍了PHP传数组给js的方法,需要的朋友可以参考下
    2014-08-08
  • PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析

    PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析

    这篇文章主要介绍了PHP超级全局变量用法,结合实例形式分析了PHP中$GLOBALS,$_SERVER,$_REQUEST等超级全局变量相关概念、功能、使用方法及操作注意事项,需要的朋友可以参考下
    2019-12-12
  • 如何基于PHP实现微信小程序pdf文件的预览功能

    如何基于PHP实现微信小程序pdf文件的预览功能

    前段时间文库类微信小程序开发中遇到个问题,就是要在小程序中预览pdf文件,下面这篇文章主要给大家介绍了关于如何基于PHP实现微信小程序pdf文件的预览功能,需要的朋友可以参考下
    2022-05-05
  • 如何用RabbitMQ和Swoole实现一个异步任务系统

    如何用RabbitMQ和Swoole实现一个异步任务系统

    从最开始的使用redis实现的单进程消费的异步任务系统到加入swoole的多进程消费模式,现在,我们的异步任务系统终于又能迈进一步。这回基于RabbitMQ的异步任务系统设计的的更加完善,包括多进程消费,异常重试等。
    2021-05-05
  • PHP编程实现脚本异步执行的方法

    PHP编程实现脚本异步执行的方法

    这篇文章主要介绍了PHP编程实现脚本异步执行的方法,结合实例形式分析了php使用fsockopen()实现的脚本异步调用与执行操作技巧,需要的朋友可以参考下
    2017-08-08
  • php数字每三位加逗号的功能函数

    php数字每三位加逗号的功能函数

    这篇文章主要介绍了php数字每三位加逗号的功能函数,想知道如何做到数字每三位加逗号的朋友可以参考下
    2015-10-10
  • 获取远程文件大小的php函数

    获取远程文件大小的php函数

    用php实现获取远程文件大小的代码,需要的朋友可以参考下。
    2010-01-01
  • 基于PHP实现的多元线性回归模拟曲线算法

    基于PHP实现的多元线性回归模拟曲线算法

    这篇文章主要介绍了基于PHP实现的多元线性回归模拟曲线算法,结合具体实例形式分析了多元线性回归模拟曲线算法的原理与相关php实现技巧,需要的朋友可以参考下
    2018-01-01
  • php添加文章时生成静态HTML文章的实现代码

    php添加文章时生成静态HTML文章的实现代码

    PHP生成静态文章HTML,有批量的生成,但比较标准的应该是在添加文章时就生成HTML文章,编辑时再重新生成HTML文章,删除文章时同样也样删除多余出来的HTML文章,这时批量生成就显得有点力不从心了,下面就介绍一下PHP在添加文章时如何生成静态的HTML文件
    2013-02-02
  • PHP处理Json字符串解码返回NULL的解决方法

    PHP处理Json字符串解码返回NULL的解决方法

    这篇文章主要介绍了PHP处理Json字符串解码返回NULL的解决方法,以一个过滤函数的实例展示了处理json返回错误的解决方法,并罗列了造成这一错误的常见情况,需要的朋友可以参考下
    2014-09-09

最新评论