ホームページ >バックエンド開発 >PHPの問題 >PHPでファイルを圧縮するとフォルダが文字化けする場合の対処法

PHPでファイルを圧縮するとフォルダが文字化けする場合の対処法

藏色散人
藏色散人オリジナル
2022-10-28 09:22:301552ブラウズ

PHP がファイルを圧縮するときにフォルダーが文字化けする場合の解決策: 1. 「pclzip.php」クラス ファイルを「mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8' )」という内容で変更します。 ;"; 2. クラスパッケージファイルは変更せずに、「iconv("GBK","UTF-8//IGNORE",$file);」だけを変更します。

PHPでファイルを圧縮するとフォルダが文字化けする場合の対処法

このチュートリアルの動作環境: 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 サイトの他の関連記事を参照してください。

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