Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn der Ordner beim Komprimieren der Datei durch PHP verstümmelt ist?

Was tun, wenn der Ordner beim Komprimieren der Datei durch PHP verstümmelt ist?

藏色散人
藏色散人Original
2022-10-28 09:22:301485Durchsuche

Lösungen für verstümmelte Ordner, wenn PHP Dateien komprimiert: 1. Ändern Sie die Klassendatei „pclzip.php“ mit dem Inhalt „mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8');"; . Ohne die Klassenpaketdatei zu ändern, ändern Sie einfach „iconv(“GBK“,UTF-8//IGNORE“,$file);“.

Was tun, wenn der Ordner beim Komprimieren der Datei durch PHP verstümmelt ist?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, Dell G3-Computer.

Was soll ich tun, wenn der Ordner beim Komprimieren von Dateien mit PHP verstümmelt ist?

Das chinesische verstümmelte Problem von PHP PclZip wurde gelöst. Bei der Verwendung von Pclzip konnte die Datei nicht komprimiert/dekomprimiert werden. Es wurde festgestellt, dass die Datei/das Verzeichnis nicht geöffnet werden konnte, aber die Ordnerberechtigungen korrekt waren . Nach dem Drucken des Dateipfads wurde festgestellt, dass er verstümmelt war. Der Grund für dieses Problem ist, dass die Dateinamenkodierung in der ZIP-Datei unter Windows gb2312 ist, während PHP die UTF-8-Kodierung verwendet.

Methode 1: Die Lösung besteht darin, die Klassendatei pclzip.php zu ändern:

Den komprimierten Dateiteil ändern:

privAddFile-Methode:

//$p_header['stored_filename'] = $p_filedescr['stored_filename'];
// 修改为下面一行
$p_header['stored_filename'] = mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8');

Den dekomprimierten Dateiteil ändern:

privExtractFile-Methode:

$p_entry['filename'] = $p_path."/".$p_entry['filename'];
// 加入下面一行
$p_entry['filename'] = mb_convert_encoding($p_entry['filename'], 'UTF-8', 'gb2312');

Methode. 2 : Ohne die Klassenpaketdatei zu ändern, können Sie den folgenden Code verwenden, um den chinesischen Dateinamen mit verstümmelten Zeichen zu dekomprimieren. Der Pseudocode lautet wie folgt:

$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 ist der normale Dateiname nach der Dekomprimierung Server ist mit dieser Methode immer noch verstümmelt und wird einfach so gebildet, dass $file der normale chinesische Dateiname ist.

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn der Ordner beim Komprimieren der Datei durch PHP verstümmelt ist?. 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