PHP IEでダウンロードしたファイル名が文字化けしている場合の対処方法
Oct 23, 2020 am 09:10 AMphp IEダウンロードファイル名文字化けの解決策: 1. ヘッダーメソッドを通じてコード文字化けを解決します; 2. 「関数remote_filesize($uri,$user='',$pw='') {.. . }」など文字化けを解決する方法を紹介します。
推奨: 「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='',$pw='') { // 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('Authorization: Basic ' . base64_encode($user.':'.$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 '<br>head-->'.$head.'<----end <br>'; // gets you the numeric value from the Content-Length // field in the http header $regex = '/Content-Length:\s([0-9].+?)\s/'; $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 = 'unknown'; } //$last=round($size/(1024*1024),3); //return $last.' MB'; return $size; } 方法三:fsock function getFileSize($url) { $url = parse_url($url); if($fp = @fsockopen($url['host'],emptyempty($url['port'])?80:$url['port'],$error)) { fputs($fp,"GET ".(emptyempty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n"); fputs($fp,"Host:$url[host]\r\n\r\n"); while(!feof($fp)) { $tmp = fgets($fp); if(trim($tmp) == '') { break; } elseif(preg_match('/Content-Length:(.*)/si',$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 サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
