php函数: urlencode

urlencode可以解决下载文件名中文乱码问题, 但有时如果文件名含有空格字符, urlencode编码后的字符串会出现加号,

故需要将空格去掉!而有一种方法可以不把空格去掉,需要在输出文件名时把+替换成%20,即可以得到正常的文件名了!

$file = "例  子   example 1.rar";
$realname = "例  子   example 1.rar";
$realname = str_replace(" ","",$realname);   //去掉英文空格 
$str=str_replace(chr(32),"",$str);  //去掉中文空格
$str=str_replace(chr(161),"",$str);  //去掉中文空格
$realname = str_replace(chr(227),"",$realname);   //去掉utf-8空格

或者用正则表达式来完成空格的替换:
$realname = preg_replace("/[[:space:]]/","",$realname);
$realname = ereg_replace("[[:space:]]","",$realname);

$fp=fopen($file,"r"); 
header("content-type: application/octet-stream");  
header("accept-ranges: bytes");
header("content-length: ".filesize("$file_path"));
header("content-disposition: attachment;"."filename= ".urlencode($realname));    //url编码文件名,正确显示中文名称
header("content-disposition: attachment;"."filename= ".str_replace("+","%20",urlencode($realname)));   //替换加号
echo fread($fp,filesize("$file_path"));    //读取文件
fclose($fp);
exit;

转      载:DavidYanXW

文章地址:http://www.cnblogs.com/DavidYan/articles/2482068.html

原文地址:https://www.cnblogs.com/jidan/p/3192645.html