Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem verstümmelter chinesischer Dateinamen bei der PHP-Komprimierung

So lösen Sie das Problem verstümmelter chinesischer Dateinamen bei der PHP-Komprimierung

藏色散人
藏色散人Original
2021-06-03 09:09:563755Durchsuche

Lösung für verstümmelte chinesische Dateinamen bei der PHP-Komprimierung: Transkodieren Sie zuerst den chinesischen komprimierten Paketnamen mit der Funktion iconv und verarbeiten Sie dann die ZIP-Datei über das ZipArchive-Objekt.

So lösen Sie das Problem verstümmelter chinesischer Dateinamen bei der PHP-Komprimierung

Die Betriebsumgebung dieses Artikels: Windows 10-System, PHP-Version 7.1, DELL G3-Computer

PHP dekomprimiert das ZIP-komprimierte Paket und löst das chinesische verstümmelte Problem

Repariert das chinesische verstümmelte Problem des nativen ZipArchive

Chinesischer zip-komprimierter Paketname und chinesische Dateinamen führen dazu, dass das mit PHP gelieferte ZipArchive verstümmelt wird, was dazu führt, dass die Methode „extractTo“ fehlschlägt:

<?php
$zip = new \ZipArchive;
$zipfile = "./test.zip";
$res = $zip->open($zipfile);
$toDir = "./test";
$s = $zip->extractTo($toDir);
print_r(scandir($toDir));
//作者:Dorm_Script
//链接:http://www.jianshu.com/p/3efa924fd809

Lesen Sie in einem Blog nach, die ursprüngliche Lösung lautet:

<?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));
//作者:Dorm_Script
//链接:http://www.jianshu.com/p/3efa924fd809

Aber wenn $zipfile ist Chinesische Codierung, es handelt sich um ein komprimiertes Paket. Wenn der Name chinesisch ist, schlägt die Dekomprimierung immer noch fehl. │ └── Gesucht

│ └── dance.txt

└── Gesucht

└── dance1.txt

Empfohlene Studie: „

PHP Video Tutorial

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter chinesischer Dateinamen bei der PHP-Komprimierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn