Lösung für verstümmelte chinesische Zeichen in PHP-ZIP: 1. Öffnen Sie die entsprechende PHP-Codedatei. 2. Verwenden Sie zum Dekomprimieren das Zip-Kapselungsprotokoll von PHP, um das Problem der verstümmelten ZipArchive-Zeichen zu lösen.
Die Betriebsumgebung dieses Artikels: Windows7-System, PHP7.1-Version, DELL G3-Computer
Was soll ich tun, wenn die chinesische PHP-Zip-Datei verstümmelt ist?
php dekomprimiert die Zip-Datei verstümmelt Problem
Offizielle Betriebsmethode:
<?php $zip = new \ZipArchive; $zipfile = "./test.zip"; $res = $zip->open($zipfile); $toDir = "./test"; $s = $zip->extractTo($toDir); print_r(scandir($toDir));
Bestehende Probleme
Wenn die Zip-Datei auf der Windows-Plattform komprimiert ist, führt die Ausführung des obigen Codes auf dem Linux-Server zu verstümmelten Zeichen und dekomprimiert sie Gleichzeitig fehlen auch die Dateien
Lösung
Problemanalyse:
ZipArchive-verstümmelte Zeichen werden durch inkonsistente Codierung verursacht, während die Dateinamen in PHP ZipArchive UTF-8 sind kodiert. Wenn der Dateiname im Zip-Archiv Sonderzeichen wie Chinesisch enthält, ist es unumgänglich, PHP ZipArchive zu verwenden, um die verstümmelten Zeichen zu dekomprimieren. Der gleiche Grund gilt, wenn ZipArchive-komprimierte Dateien verstümmelt sind oder nicht komprimiert werden können.
Lösung
Verwenden Sie nicht die integrierte ZipArchive::extractTo()-Methode, um ZipArchive-Dokumente zu dekomprimieren Dateien. Verstümmelte Zeichen.
Lösen Sie den Code
<?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));
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWie man mit verstümmelten chinesischen Zeichen in PHP Zip umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!