ホームページ  >  記事  >  バックエンド開発  >  PHP IEでダウンロードしたファイル名が文字化けしている場合の対処方法

PHP IEでダウンロードしたファイル名が文字化けしている場合の対処方法

藏色散人
藏色散人オリジナル
2020-10-23 09:10:162099ブラウズ

php IEダウンロードファイル名文字化けの解決策: 1. ヘッダーメソッドを通じてコード文字化けを解決します; 2. 「関数remote_filesize($uri,$user='',$pw='') {.. . }」など文字化けを解決する方法を紹介します。

PHP IEでダウンロードしたファイル名が文字化けしている場合の対処方法

推奨: 「PHP ビデオ チュートリアル

php ファイルのダウンロード IE ファイル名が文字化けする質問

Chromeブラウザを使用していますが、問題は見つかりませんでした。今日IE6を使ったのですが、ファイルをダウンロードする際にファイル名が文字化けし、IEでThunder経由でダウンロードする際にもファイル名が文字化けしていました。オンラインで調べたところ、IE でエンコードするには urlencode を使用する必要があるとのことで、

header('Content-Disposition:attachment; filename='.rawurlencode($file_name); を試してみましたが、結果は依然として文字化けしていましたPHP ファイル自体は gbk/gb2312 でエンコードされているため、最初に $file_name を utf-8 エンコードに変換し、次に urlencode

header('Content-Disposition:attachment; filename='.rawurlencode( iconv("GBK" ,"UTF-8",$file_name))); この方法でIEでダウンロードする場合は問題ありませんが、urlencodeのみutf-8のエンコードをエスケープできますか?

もありますリモート ファイルのサイズの取得の問題、PHP の filesize 関数はローカル ファイルのみを処理できます。リモート ファイルの処理は失敗して警告が発行され、Windows プラットフォームで渡されるパラメータは gbk/gb2312 エンコーディングである必要があります。UTF の使用-8 エンコーディングではシステムにアクセスできません。リソース。

インターネット上のリモート ファイルのサイズを取得する 4 つの方法を見つけました。共有してくれた先輩に感謝します。記録してください:

方法 1: header

<?php get_headers($url,true); //返回结果 Array ( [0] => HTTP/1.1 200 OK [Date] => Sat, 29 May 2004 12:28:14 GMT [Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux) [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT [ETag] => "3f80f-1b6-3e1cb03b" [Accept-Ranges] => bytes [Content-Length] => 438 [Connection] => close [Content-Type] => text/html ) ?>

ここでは、Content-Length によってサイズが直接取得されます。

方法 2:curl

function remote_filesize($uri,$user=&#39;&#39;,$pw=&#39;&#39;) { // start output buffering ob_start(); // initialize curl with given uri $ch = curl_init($uri); // make sure we get the header curl_setopt($ch, CURLOPT_HEADER, 1); // make it a http HEAD request curl_setopt($ch, CURLOPT_NOBODY, 1); // if auth is needed, do it here if (!emptyempty($user) && !emptyempty($pw)) { $headers = array(&#39;Authorization: Basic &#39; . base64_encode($user.&#39;:&#39;.$pw)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } $okay = curl_exec($ch); curl_close($ch); // get the output buffer $head = ob_get_contents(); // clean the output buffer and return to previous // buffer settings ob_end_clean(); echo &#39;<br>head-->&#39;.$head.&#39;<----end <br>&#39;; // gets you the numeric value from the Content-Length // field in the http header $regex = &#39;/Content-Length:\s([0-9].+?)\s/&#39;; $count = preg_match($regex, $head, $matches); // if there was a Content-Length field, its value // will now be in $matches[1] if (isset($matches[1])) { $size = $matches[1]; } else { $size = &#39;unknown&#39;; } //$last=round($size/(1024*1024),3); //return $last.&#39; MB&#39;; return $size; } 方法三:fsock
function getFileSize($url) { $url = parse_url($url); if($fp = @fsockopen($url[&#39;host&#39;],emptyempty($url[&#39;port&#39;])?80:$url[&#39;port&#39;],$error)) { fputs($fp,"GET ".(emptyempty($url[&#39;path&#39;])?&#39;/&#39;:$url[&#39;path&#39;])." HTTP/1.1\r\n"); fputs($fp,"Host:$url[host]\r\n\r\n"); while(!feof($fp)) { $tmp = fgets($fp); if(trim($tmp) == &#39;&#39;) { break; } elseif(preg_match(&#39;/Content-Length:(.*)/si&#39;,$tmp,$arr)) { return trim($arr[1]); } } return null; } else { return null; } } 方法四:file_get_contents
$fCont = file_get_contents("http://www.cnmiss.cn/"); echo strlen($fCont)/1024;

以上がPHP IEでダウンロードしたファイル名が文字化けしている場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。