@
ВадимПоковырялся сегодня - чем дальше в лес, тем толще партизаны. Предлагаю zip файлы пока не трогать, т.к. проблема по всей видимости на моей стороне.
Да, в zip'e имена файлов в CP866, но начав писать программу и запросив данные по zip'у через библиотеку libzip, я, внезапно, получил имена файлов в UTF-8.
Оказалось, что по спецификации zip, начиная с какой-то версии формата (~2007 года), он может дополнительно к Native имени файла хранить и его UTF-8 версию. Для этого добавляется специальный "Info-ZIP Unicode Path Extra Field" (п. 4.6.9)
https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXTЕсли имя и так в UTF-8 - то оно не добавляется.
Так вот в zip'е, на котором я тренировался, это дополнительное поле присутствует и libzip просто отдает его вместо оригинального CP866.
Я с удивлением снова полез в свой архиватор, который тоже написан с использованием libzip - и опа, там все показывается верно. Итого, либо за ночь поменялись zip архивы (я перекачивал файлы заново) - но это вряд ли. Либо был баг в моей системе - а как раз вчера я обновился с Kubuntu 18.10 до Kubuntu 19.04, потому и zip'ы перекачивал. Вчера новая версия Kubuntu вышла. Либо это эффект от замены системного libzip'а, на свежескачанный и собранный мною из исходников, что я сделал в процессе отладки.
В любом случае, необходимость перепаковывать архивы под большим вопросом. Я еще поразбираюсь, если косяк с отображением не пропал напрочь и удастся найти концы.