ホームページ  >  記事  >  バックエンド開発  >  PHPの解凍zipが文字化けしている場合の対処法

PHPの解凍zipが文字化けしている場合の対処法

藏色散人
藏色散人オリジナル
2021-03-18 11:00:172799ブラウズ

php で zip 文字化けコードを解凍する解決策: まず、対応する PHP ファイルを開き、次に PHP の zip カプセル化プロトコルを使用して解凍し、ZipArchive 文字化けコードを解決します。

PHPの解凍zipが文字化けしている場合の対処法

#この記事の動作環境:Windows7 システム、PHP7.1 バージョン、DELL G3 パソコン

php 解凍 zip ファイルが文字化けする問題

正式な操作方法:

<?php
$zip = new \ZipArchive;
$zipfile = "./test.zip";
$res = $zip->open($zipfile);
$toDir = "./test";
$s = $zip->extractTo($toDir);
print_r(scandir($toDir));

既存の問題

zipがWindowsプラットフォームで圧縮されている場合、上記のコードを実行すると文字化けして表示されます。 Linux サーバー、同時に解凍されたファイルも失われます

解決策

問題分析:

ZipArchive の文字化けは、一貫性のないことが原因で発生します。エンコードでは、Windows ファイル システムは gbk エンコードされますが、PHP ZipArchive のファイル名は UTF-8 エンコードされます。 Zip アーカイブ内のファイル名に中国語などの特殊文字が含まれている場合、文字化けを解凍するには PHP ZipArchive を使用する必要があります。同じ理由が、ZipArchive 圧縮ファイルが文字化けしているように見える場合や、圧縮できない場合にも当てはまります。代わりに PHP を使用し、ZipArchive の文字化けコードを解決するために、zip パッケージ化プロトコルを解凍します。

ソリューション コード

<?php
$zip = new \ZipArchive;
$zipfile = "./test.zip";
$res = $zip->open($zipfile);
$toDir = "./test";
if(!file_exists($toDir)) {
   mkdir($toDir);
}
$docnum = $zip->numFiles;
for($i = 0; $i < $docnum; $i++) {
   $statInfo = $zip->statIndex($i);
   if($statInfo[&#39;crc&#39;] == 0) {
       //新建目录
       mkdir($toDir.&#39;/&#39;.substr($statInfo[&#39;name&#39;], 0,-1));
   } else {
       //拷贝文件
       copy(&#39;zip://&#39;.$zipfile.&#39;#&#39;.$statInfo[&#39;name&#39;], $toDir.&#39;/&#39;.$statInfo[&#39;name&#39;]);
   }
}
print_r(scandir($toDir));

推奨学習:「

PHP ビデオ チュートリアル

以上がPHPの解凍zipが文字化けしている場合の対処法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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