openSUSE розпакуйте питання unicode


0

На машині Linux (openSUSE) я намагаюся розгорнути на Tomcat 8 додаток (файл війни), який містить файли з іменами з символами Unicode.

Всередині файлу війни назва виглядає так:

бжк-природний-1496336830201.xml

але після розгортання файл виглядає так:

???-?????????????-1496336830201.xml

Крім того, коли я вручну розпакувати файли, імена також пошкоджені.

Як сказати unzip і Tomcat для правильного розгортання імен файлів?

До речі - я завантажив цей файл війни на свою машину Windows і розпакував там - все добре виглядає.

ОНОВЛЕНО

Це зразок файлу війни з ім'ям файлу unicode: файлу війни

Що трапилося з ім'ям файлу всередині цієї війни?


Зазвичай файлові системи Unix підтримують Unicode. Але локал (або шрифт), який використовується у вашому терміналі, може не бути. В іншому випадку перевірте unzip -v, це скаже вам, якщо вона була зібрана з підтримкою Unicode (моя каже UNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)
xenoid

так, є UNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)
alexanoid

Потім перевірте шрифт локалі та терміналу. Чи спробували ви подивитися на каталог за допомогою графічного браузера файлів (filezilla, якщо віддалений і доступний за допомогою FTP або SSH)? Це може показати вам назви файлів правильно.
xenoid

схоже, що проблема з самими іменами файлів у файлі війни, тому що я можу створити не-латинські символи в системі і бачити їх .. Як перевірити кодування імені файлу в Linux?
alexanoid

1
Швидкий скрипт python, де все пояснюється: тут
xenoid

Відповіді:


1

Думаю, вам потрібен пакет unzip-rcc . Я перевірив на моєму комп'ютері, що якщо я використовую unzip-rcc, я досягну успіху. Хоча, якщо я використовую оригінальний розпакувати, це не вдається.

Я китайський користувач, який також потребує Unicode. Кожен раз, коли я встановлюю openSUSE, цей пакет встановлюється з високим пріоритетом. ;-)


Спасибі, unzip працює нормально, але Tomcat все ще розгортати (розпакувати) файли з проблемою
alexanoid

0

WAR фактично містить ім'я файлу, закодоване в UTF-8. Однак прапор, який говорить так (біт # 11 прапорів загального призначення) не встановлено, але це можливо, оскільки команда JAR використовує інший варіант кодування імен (це дійсно так з командою JAR, яку я маю).

Отже, справжня відповідь: не використовуйте звичайну команду ZIP, щоб розпакувати, але використовуйте саму команду JAR:

jar -xvf api.war

Вихід:

created: WEB-INF/
created: WEB-INF/classes/
created: WEB-INF/classes/sample-data/
created: WEB-INF/classes/sample-data/decisions/
created: WEB-INF/classes/sample-data/decisions/novobudivy_refs/
inflated: WEB-INF/classes/sample-data/decisions/novobudivy_refs/13я-стац_я-великого-фонтану-1496338558663.xml
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.