Не понятно, зачем UTF-8 вначале в CP437 конвертировать, а затем из CP437 в CP865.
Вот здесь есть решение:
https://ru.stackoverflow.com/questions/606882
$name = $zip->getNameIndex($i, \ZipArchive::FL_ENC_RAW);
$name = iconv('cp866','UTF-8//IGNORE',$name);