Я написал программу на С ++, которая должна заархивировать файлы в своей работе.Для создания этих zip-файлов я использовал библиотеку XZip.При разработке эта программа работала на машине с Win7 и работает нормально.
Теперь программу следует использовать на машине с WindowsXP.Проблема, с которой я сталкиваюсь: если я позволю XZip создать zip-архив «ü.zip» и добавить файл «ü.txt» к нему на Win7, он будет работать как положено.Однако в WindowsXP я получаю файл «ü.zip» с «³.txt» в качестве файла.
«³» => «ü», конечно, проблема кодирования между UTF8 и Ascii (ü = 252 в UTF8 и 252 = ³ в Ascii), НО я не могу себе представить, как это может повлиятьсоздание внутренней структуры zip по-разному в зависимости от ОС.
// РЕДАКТИРОВАТЬ, чтобы очистить его:
проблема в том, что я запускаю тест с XZip на Win7 и получаю архив "ü.zip ", содержащий файл с именем" ü.txt ".
Когда я запускаю этот тест на компьютере с XP, я получаю архив" ü.zip ", содержащий файл" ³.txt ".
// Edit2: меня удивляет то, что именно заставляет zip меняться между XP и Win7.Тот факт, что он изменяется, означает, что либо функция Windows ведет себя по-разному, либо XZip имеет специфическое поведение для различных встроенных ОС.
При быстром взгляде на XZip я не вижу, что он меняет флаг кодировки в zip-архивах.,На вопрос, конечно, могут ответить только те люди, которые раньше тщательно изучили эту проблему.