Cette méthode ne fonctionne pas toujours. Je me suis retrouvé à installer une bibliothèque externe comme 7zip pour faire ce travail et cela a résolu le problème. Il est difficile de connaître le charset d'encodage utilisé pour un fichier dans Windows. Dans mon cas, j'ai dû faire cela pour éviter les erreurs dans les noms de fichiers après l'extraction. Voici mes variables:
// Extract file.
$tmp_dir = uniqid();
$zip_uri = "test.zip";
$destination_dir = "C:\\Users\\user\\AppData\\Local\\Temp\\$tmp_dir";
Ceci est la méthode ZipArchive:
$zip = new ZipArchive();
$zip->open($zip_uri);
if (!$zip->extractTo($destination_dir)) {
die("Error extracting files.");
}
$zip->close();
Cette méthode pas toujours travaillé, mais ce qui suit ne fonctionne admirablement (en utilisant 7Zip):
exec("C:\\7zip\\7za.exe e $zip_uri -o$destination_dir");
J'espère que cela aide quelqu'un à ne pas passer des heures à essayer de comprendre le charset d'encodage d'un fichier zippé particulier.
Comment l'avez-vous compressé? – Gumbo
Il a été zippé avec winrar. – Ximik
@Ximik: Sur quel système d'exploitation et quel est le système d'exploitation cible? – Gumbo