PHP がファイルを圧縮するときにフォルダーが文字化けする場合の解決策: 1. 「pclzip.php」クラス ファイルを「mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8' )」という内容で変更します。 ;"; 2. クラスパッケージファイルは変更せずに、「iconv("GBK","UTF-8//IGNORE",$file);」だけを変更します。
このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、Dell G3 コンピューター。
php がファイルを圧縮するときにフォルダーが文字化けした場合はどうすればよいですか?
PHP PclZip の中国語文字化け問題の解決方法
Pclzip を使用すると、ファイルの圧縮・解凍ができなくなります。エラーメッセージを追跡した結果、ファイル/ディレクトリを開くことができないことがわかりましたが、フォルダーのアクセス許可は正しいのですが、ファイル パスを印刷すると文字化けしていることがわかりました。この問題の理由は、Windows では zip 内のファイル名のエンコーディングが gb2312 であるのに対し、php では utf-8 エンコーディングが使用されるためです。
方法 1: 解決策は、pclzip.php クラス ファイルを変更することです:
圧縮ファイル部分を変更します:
privAddFile メソッド:
//$p_header['stored_filename'] = $p_filedescr['stored_filename']; // 修改为下面一行
$p_header['stored_filename'] = mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8');
Unzipファイルの一部変更:
privExtractFileメソッド:
$p_entry['filename'] = $p_path."/".$p_entry['filename']; // 加入下面一行 $p_entry['filename'] = mb_convert_encoding($p_entry['filename'], 'UTF-8', 'gb2312');
方法2: クラスパッケージファイルを変更せずに、このコードを使用して文字化けした中国語ファイル名を解凍できます。 :
$file_type = mb_detect_encoding($file,array('ASCII','GB2312','GBK','UTF-8','LATIN1','BIG5')); if($file_type=='EUC-CN'){ $file = iconv("GBK","UTF-8//IGNORE",$file); }
$file は解凍後の通常のファイル名ですが、この方法でもサーバー上のファイル名は文字化けしますが、$file は整形中の通常の中国語ファイル名です。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHPでファイルを圧縮するとフォルダが文字化けする場合の対処法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。