Ответ 1
Вам, вероятно, стоит попробовать mb_detect_encoding() для получения помощи по этому вопросу - см. код ниже. Возможно, вам придется расширять этот код, если у вас также есть проблема с его путем. Просто используйте цикл, если вам нужно это сделать.
$file = iconv('utf-8', 'windows-874', $_GET['File']);
$path = iconv('utf-8', 'windows-874', $_GET['Path']);
$zip = new ZipArchive;
if ($zip->open($file) === TRUE) {
// convert to Thai language
for($i = 0; $i < $zip->numFiles; $i++) {
$name = $zip->getNameIndex($i);
$order = mb_detect_order();
$encoding = mb_detect_encoding($name, $order, true);
if (FALSE === $encoding) {
throw new UnexpectedValueException(
sprintf(
'Unable to detect input encoding with mb_detect_encoding, order was: %s'
, print_r($order, true)
)
);
} else {
$encoding = mb_detect_encoding($name);
$stringUtf8 = iconv($encoding, 'UTF-8//IGNORE', $name);
$zip->extractTo($path,$stringUtf8);
}
}
$zip->close();
echo json_encode('unZip!!!');
} else {
echo json_encode('Failed');
}