2015-04-23 4 views
0

Я создаю ZIP архив на UNIX системы с помощью PHP 5.3.10 с Zip версии 1.12.5 и 0.11.2 Libzip версии:PHP ZipArchive с акцентом символов в именах файлов

<?php 
$zip = new ZipArchive(); 
$test_zip = "./test.zip"; 
if ($zip->open($test_zip, ZIPARCHIVE::CREATE)===TRUE) 
{ 
    $zip->addFromString("Liste client à exporter.txt","Content line 1\nContent line 2\n"); 
    $zip->close(); 

    if(file_exists($test_zip)) 
    { 
     header ("Content-Type: application/octet-stream"); 
     header ("Accept-Ranges: bytes"); 
     header ("Content-Length: ".filesize($test_zip)); 
     header ("Content-Disposition: attachment; filename=\"test.zip\""); 
     header ("Cache-Control: max-age=60"); 
     readfile($test_zip); 
     unlink ($test_zip); 
    } 
} 
?> 

Когда я открываю генерироваться ZIP-файл test.zip на Windows 7 используя внутренний ZIP, я вижу файл в архиве, например «Liste client + a exporter.txt» вместо «Liste client à exporter.txt». Но если открыть его, например, с 7z, имя файла верное, с акцентом. PHP-файл имеет кодировку UTF-8.

решаемые Проблема была в Windows 7 (патч KB2704299)

File names are corrupted after you decompress a .zip file in Windows 7 or in Windows Server 2008 R2

+0

почтовый файл открыт в расшифрованной формате? – RaMeSh

+0

Не понимаю, что вы имели в виду. Он открывается автоматически после загрузки. Тот же эффект при двойном щелчке по zip-файлу. –

+0

Какова конкретная проблема – RaMeSh

ответ

0

была такая же проблема (я французский, так что проблема с акцентом я знаю о).

Чтобы избежать этой проблемы, я использую внешнюю команду zip.

Для Linux:

exec("cd \"".$the_directory_you want_to_zip."\" && zip -0 -r \"".$path_zip."\" ."); 
+0

Это не помогает. Тот же эффект: с внутренними окнами, поднимающими то же самое + a. Использование имен 7z верны. –