Ребята, помогите, 2 день бьюсь над перекодировкой имен файлов при извлечении из zip архива.
вот сам код:
$zip = new ZipArchive();
$state = $zip->open('test.zip');
if ($state === true) {
for ($i = 0; $i < $zip->numFiles; ++$i) {
//skip if folder
$stats = $zip->statIndex($i);
if ($stats['size'] === 0 && $stats['crc'] === 0) {
continue;
}
$name = $zip->getNameIndex($i);
$content = $zip->getFromIndex($i);
}
$zip->close();
}
unset($zip);
Всегда получаю какие-то исковерканные имена. по типу:
䫬π¼Ñ¡Γᵿ∩ ¬ Γ«αúá¼ Çαßᬿ ŽÑσá¡δ
Перекодировки из и в cp1251, cp866, IBM437 и других не помогли, или я не нашел нужную комбинацию :(
вот тестовый архив, с которым я пытался работать:
Архив
на домашней машине WIn у меня: PHP 7.1.7 и
LC_COLLATE=C;LC_CTYPE=Russian_Russia.1251;LC_MONETARY=C;LC_NUMERIC=C;LC_TIME=C
на сервере у меня Debian 9 PHP 7.1.18 и
LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C