PHP强制下载文件代码(解决IE下的中文文件名问题)

中遇到的一个问题是,中文文件名是直接放在头下,将IE的解决方案成为乱码是urlencode文件名然后再放入标题,如下。
复制代码代码如下所示:
< PHP
file_name美元= urlencode($ _request { 'filename});
标题(杂注:公);标题(到期:0);
标题(缓存控制:必须重新验证,检查= 0,后预检查= 0 );
页眉(内容类型:应用程序/下载);
头('content-type:应用/ vnd.ms-excel;字符集= UTF-8);
标题(内容传输编码:二进制);
头('content-disposition:依恋;文件名=file_name美元。);
回声stripslashes($ _request { 'content' });
>


常见的有两种方法解决IE文件名称的中文的PHP header下载文件乱码,一是改变页面编码为UTF8,另一种是进入URLEncode中文URL编码,它是可以解决的。
方案一(我的网页是UTF-8编码):

复制代码代码如下所示:
文件;
UA _server美元美元{ =http_user_agent};
encoded_filename美元= urlencode($文件名);
encoded_filename美元= str_replace(+
头('content-type:应用/字节流);
如果(preg_match( / / MSIE
头('content-disposition:附件文件名=。encoded_filename美元。);
} else if(preg_match( / / 火狐
头('content-disposition:依恋;文件名=utf8。$文件名;
{人}
头('content-disposition:附件文件名=。文件名;
}


方案二

URLEncode的文件的名字然后把它放在头部,如下。
代码如下:

复制代码代码如下:< PHP
file_name美元= urlencode($ _request { 'filename});
标题(杂注:公);标题(到期:0);
标题(缓存控制:必须重新验证,检查= 0,后预检查= 0 );
页眉(内容类型:应用程序/下载);
头('content-type:应用/ vnd.ms-excel;字符集= UTF-8);
标题(内容传输编码:二进制);
头('content-disposition:依恋;文件名=file_name美元。);
回声stripslashes($ _request { 'content' });
>