解决PHP在IE下载文件,为文件名为乱码问题_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > 解决PHP在IE下载文件,为文件名为乱码问题

解决PHP在IE下载文件,为文件名为乱码问题

 2010/12/15 8:02:00  xiaoyangok  http://xiaoyangok.javaeye.com  我要评论(0)
  • 摘要:通常使用以下代码就能导出为流的文件,而不是打开文件header("Content-Type:application/force-download;charset=utf-8;name=\"$file_name\\");header("Content-Transfer-Encoding:binary");header("Content-Disposition:attachment;filename=\"$file_name\"");但是,如果$file_name是UTF-8编码的
  • 标签:解决 PHP 文件 下载 问题 乱码问题 文件名

通常使用以下代码就能导出为流的文件,而不是打开文件

header("Content-Type: application/force-download; charset=utf-8;name=\"$file_name\\");
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: attachment;filename=\"$file_name\"");



但是,如果$file_name是UTF-8编码的,比如文件名为测试.html;
ie这时就搞些小情绪,文件名变成了乱码了

在RFC2231的定义里面, 多语言编码的Content-Disposition应该这么定义:
Content-Disposition: attachment; filename*="utf8''%E6%B5%8B%E8%AF%95.html"
即:
filename后面的等号之前要加 *
filename的值用单引号分成三段,分别是字符集(utf8)、语言(空)和urlencode过的文件名。
所以这时应该对文件名进行url编码转换 ,使用php的urlencode很轻松就搞定了

因此,以上代码应该加上url编码转换

$file_name = urlencode($file_name);






发表评论
用户名: 匿名