知识大全 PHP下载文件名乱码问题详解
Posted 知
篇首语:胸怀万里世界, 放眼无限未来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP下载文件名乱码问题详解相关的知识,希望对你有一定的参考价值。
PHP下载文件名乱码问题详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
通过把Content Type设置为application/octet stream 可以把动态生成的内容当作文件来下载 相信这个大家都会 那么用Content Disposition设置下载的文件名 这个也有不少人知道吧 基本上 下载程序都是这么写的
header( Content Disposition: attachment; filename= $filename);print Hello! ;?>这样用浏览器打开之后 就可以下载document txt
但是 如果$filename是UTF 编码的 有些浏览器就无法正常处理了 比如把上面那个程序稍稍改一下
header( Content Disposition: attachment; filename= $filename);print Hello! ;?>把程序保存成UTF 编码再访问 IE 下载的文件名就会乱码 FF 下下载的文件名就只有 中文 两个字 Opera 下一切正常
输出的header实际上是这样子
Content Disposition: attachment; filename=中文 文件名 txt其实按照RFC 的定义 多语言编码的Content Disposition应该这么定义
Content Disposition: attachment; filename*= utf %E %B %AD%E % % % %E % % %E %BB%B %E % % D txt即
filename后面的等号之前要加 * filename的值用单引号分成三段 分别是字符集(utf ) 语言(空)和urlencode过的文件名 最好加上双引号 否则文件名中空格后面的部分在Firefox中显示不出来 注意urlencode的结果与php的urlencode函数结果不太相同 php的urlencode会把空格替换成+ 而这里需要替换成%
经过试验 发现几种主流浏览器的支持情况如下
IE attachment; filename=
FF attachment; filename= UTF 文件名
attachment; filename*= utf
O attachment; filename= UTF 文件名
Safari (Win) 貌似不支持?上述方法都不行
这样看来 程序必须得这样写才能支持所有主流浏览器
$encoded_filename = urlencode($filename);$encoded_filename = str_replace( + %
$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*= utf \\ \\ $filename );
else header( Content Disposition: attachment; filename= $filename );print ABC ;?>
cha138/Article/program/PHP/201311/21454相关参考
;;;;;;;;;;;;;;;;;;作者金步国;;日期;;;;;;;;;;;;;;;;;; 版权声明 ;;;;;;;;;;;;;;;;;;;本文作者是一
解决PHP初学者的乱码问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!乱码一直是困扰PHP初学者
示例代码:用file_get_contents以get方式获取内容复制代码代码如下:<?php$url=;$=file_get_contents($url);//print_r($_resp
PHP下载远程文件类(支持断点续传) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PHP下载远
PHP典型模块与项目实战大全:PHP文件下载的原理及实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 基于php使用memcache存储session的详解
web服务器的phpsession都给memcached这样你不管分发器把ip连接分给哪个web服务器都不会有问题了配置方法很简单就在php的配置文件内增加一条语句就可以了不过前提你需要装好mem
解析PHP实现下载文件的两种方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对使用PH
让PHP更快的为用户提供文件下载 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一般来说我们
functionremote($urls$name=$path=$dir=/images/)if(!is_array($urls)orcount($urls)==)returnfalse;dmkdir
Struts1.x系列教程(3):属性(资源)文件乱码问题的解决之道 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快