#この記事の動作環境:Windows7 システム、PHP7.1 バージョン、DELL G3 パソコンphp で zip 文字化けコードを解凍する解決策: まず、対応する PHP ファイルを開き、次に PHP の zip カプセル化プロトコルを使用して解凍し、ZipArchive 文字化けコードを解決します。
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['crc'] == 0) { //新建目录 mkdir($toDir.'/'.substr($statInfo['name'], 0,-1)); } else { //拷贝文件 copy('zip://'.$zipfile.'#'.$statInfo['name'], $toDir.'/'.$statInfo['name']); } } print_r(scandir($toDir));推奨学習:「
PHP ビデオ チュートリアル
」以上がPHPの解凍zipが文字化けしている場合の対処法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。