Правильная кодировка имен файлов в zip-архивах, созданных в Windows и распакованных в Linux
2129
Ole
У меня проблемы с разными кодировками в Windows и Linux (Centos).
У меня есть файлы со специальными символами в именах файлов из разных языков. Zip-архив создается под Win7 и загружается на сервер Linux. Под Windows все символы отображались нормально, как и ожидалось. Но после загрузки и распаковки с помощью phps ZipArchive()или Linux unzipнекоторые специальные символы отображались со странными неправильными символами.
Я знаю, что это известная проблема во взаимодействии между Windows и Linux, но я не могу решить свою проблему. Я пытался разархивировать мой zip-файл с разными кодировками, но у меня ничего не получалось. На португальском языке характерная черта характера создает много проблем, но все в порядке.
aplicações.txt после расстегивания молнии aplicaçΣes.txt
Насколько я понял правильно, windows использует кодировку ASCII-кода IBM860, но иногда я читаю windows-1257 и не знаю, какая кодировка используется, когда zip-архив создается с WinRar под Win7. Есть ли способ проверить это или сказать WinRar использовать UTF-8?
Когда zip-архив загружается в Linux и распаковывается ZipArchive()(php) или в Linux bashс unzip, имена файлов неверны. Думаю, это потому, что Linux использовал UTF-8.
Под командой Linux я попытался:
unzip -O windows-1257 uploaded.zip -d zipout/
Под командой Linux я попытался:
unzip -O IBM860 uploaded.zip -d zipout/
Под командой Linux я попытался:
unzip -O IBM437 uploaded.zip -d zipout/
Под командой Linux я попытался:
unzip -O UTF-8 uploaded.zip -d zipout/
Под командой Linux я попытался:
unzip -O UTF-16 uploaded.zip -d zipout/
Вы пробовали это с любым кроссплатформенным программным обеспечением, доступным для Windows и Linux, например, `7zip`. Просто любопытно, если это имеет значение.
Sandeep 6 лет назад
1
По-видимому, WinRAR версии 3.92 и более ранние не работают должным образом с UTF-8. Какую версию WinRAR вы используете?
Andrew Morton 6 лет назад
1
Действительно, я пробовал 7z, также с собственным форматом файлов .7z, но с тем же результатом. Я был сбит с толку, потому что думал, что 7zip по умолчанию использует utf-8 для кодирования даже под windows. Есть ли способ явно сказать 7zip использует utf-8?
Ole 6 лет назад
0
WinRar, вероятно, использовал cp437. Однако õ не существует в этом наборе символов. Вы можете изменить все имена файлов перед сжатием файлов. Если вы добавите, например, китайский символ в конец каждого имени файла, вы заставите WinRar использовать Utf8.
SpiderPig 6 лет назад
0
Хорошо, это имело бы смысл. Спасибо за вашу подсказку с китайским иероглифом, я также попробую это, чтобы убедиться, что он работает правильно с кодировкой utf-8.
Ole 6 лет назад
0
1 ответ на вопрос
1
Vi Lugao
Если языком вашей версии Windows 7, используемой для архивирования файлов, является бразильский португальский язык, то, вероятно, кодировкой будет IBM-850 или Windows-1252. Попробуйте это.
У меня тоже есть эта проблема. Но также бывает при переносе между разными языками Windows. Например, между английской и бразильской португальской версиями Windows английская версия использует IBM-437, а версия pt-BR - IBM-850.
Если вы используете WinZip для архивирования, эта проблема не возникает. Я не рекомендую использовать встроенную Windows для архивирования и / или распаковки, так как это также вызывает проблемы с кодировкой имен файлов.