<?php
$zip = new ZipArchive();
$zip->open(getcwd().'/test.zip', ZIPARCHIVE::CREATE);
$name = 'файл 1';
$zip->addFile($name,iconv('utf-8','cp866',$name));
$zip->close();
<?php
$zip = new ZipArchive();
$zip->open(getcwd().'/test.zip', ZIPARCHIVE::CREATE);
$name = 'файл 1';
$zip->addFile(iconv('utf-8','cp1251',$name),iconv('utf-8','cp866',$name));
$zip->close();
Если он выдаст нормальное имя — у вас проблемы с iconv. Тут поможет разве что обновление всего php, ну или как вариант написать/нагуглить свой код конвертации из utf-8 в cp866
если нет, проблемы с ZipArchive — попробуйте обновить его через «pecl upgrade zip»