Encountered in the middle of a problem is submitted to the Chinese file name directly into the header in IE will become garbled, the solution is to urlencode the filename first and then into the header, as follows.
Copy Code code as follows:
<?php
$file _name = urlencode ($_request[' filename '));
Header ("Pragma:public"); Header ("expires:0");
Header ("Cache-control:must-revalidate, Post-check=0, pre-check=0");
Header ("Content-type:application/force-download");
Header (' Content-type:application/vnd.ms-excel; Charset=utf-8 ');
Header ("Content-transfer-encoding:binary");
Header (' Content-disposition:attachment filename= '. $file _name);
echo stripslashes ($_request[' content ');
?>
Solve the PHP header download file in IE filename Chinese garbled there are two common, one is to change the page code to UTF8, the other is the Chinese URL into the UrlEncode code can be solved.
Solution One (my page is Utf-8 encoding):
Copy Code code as follows:
$filename = "Chinese. txt";
$ua = $_server["Http_user_agent"];
$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. '"');
}
Workaround Two
UrlEncode the filename before putting it in the header, as follows.
The code is as follows:
Copy Code code as follows:
<?php
$file _name = urlencode ($_request[' filename '));
Header ("Pragma:public"); Header ("expires:0");
Header ("Cache-control:must-revalidate, Post-check=0, pre-check=0");
Header ("Content-type:application/force-download");
Header (' Content-type:application/vnd.ms-excel; Charset=utf-8 ');
Header ("Content-transfer-encoding:binary");
Header (' Content-disposition:attachment filename= '. $file _name);
echo stripslashes ($_request[' content ');
?>