Чи є інша утиліта декомпресії, яка розпакує мої файли з правильними іменами? Мені не відомо про утиліту zip, яка підтримує ці кодові сторінки. 7z має певне розуміння кодування, але я вважаю, що це має бути кодування, про яке ваша система знає загалом (ви вибираєте це, встановивши LANG
змінну середовища), і кодові сторінки Windows, швидше за все, не є серед них.
unzip -UU
слід працювати з командного рядка, щоб створити файли з правильними байтами в своїх іменах (відключивши всю підтримку Unicode). Це, мабуть, ефект, який ви вже отримали від інструменту GNOME. Кодування не буде правильним в будь-якому випадку, але ми можемо виправити це нижче.
Щось не так із способом стиснення файлу чи це просто несумісність реалізацій ZIP? Або навіть неправильне використання / помилка утиліти Linux ZIP? Файл, який вам було надано, не створювався портативно. Це не обов'язково неправильно для внутрішнього використання, коли кодування зафіксовано та відомо заздалегідь, хоча специфікація формату говорить, що імена повинні бути або UTF-8, або cp437, а ваші - ні. Навіть між машинами Windows використання різних кодових сторінок не спрацьовує, але машини, які не працюють з Windows, не мають концепції цих сторінок коду. Більшість інструментів UTF-8 кодують свої імена файлів (що все ще не завжди достатньо, щоб уникнути проблем).
Що я можу зробити, щоб отримати правильні імена файлів після того, як розпакували їх за допомогою накреслених? Якщо ви можете ідентифікувати кодування файлових файлів, ви можете перетворити байти в існуючих іменах в UTF-8 і перемістити існуючі файли до потрібного імені. Інструмент по суті завершує цей процес в одну команду: намагатиметься конвертувати всі всередині від cp862 в UTF-8.convmv
convmv -f cp862 -t utf8 -r .
.
Крім того, ви можете використовувати iconv
та find
переміщувати все до їх правильних назв. Щось на зразок:
find -mindepth 1 -exec sh -c 'mv "$1" "$(echo "$1" | iconv -f cp862 -t utf8)"' sh {} \;
знайде всі файли під поточним каталогом і спробує перетворити імена в UTF-8.
В будь-якому випадку ви можете експериментувати з різними кодуваннями і спробувати знайти те, що має сенс.
Після виправлення кодування для вас, якщо ви хочете відправити ці файли назад в іншому напрямку, можливо, у вас буде та сама проблема на іншому кінці. У такому випадку ви можете змінити процес перед тим, як зібрати файли -UU
, оскільки це, ймовірно, буде дуже важко виправити на кінці Windows.