Знаете ли вы некоторую библиотеку/способ в Java для создания tar-архива с именами файлов в соответствующей национальной кодовой странице Windows (например, cp1250).Создание tar-архива с национальными символами в Java
Я попытался с Java tar, пример кода:
final TarEntry entry = new TarEntry(files[i]);
String filename = files[i].getPath().replaceAll(baseDir, "");
entry.setName(new String(filename.getBytes(), "Cp1250"));
out.putNextEntry(entry);
...
Это не работает. Национальные символы сломаны, когда я извлекаю смолу в окнах. Я также обнаружил странную вещь, под Linux польских национальных символов отображается правильно только тогда, когда я использовал ISO-8859-1:
entry.setName(new String(filename.getBytes(), "ISO-8859-1"));
Несмотря на то, что собственно польских кодовом является ISO-8859-2, который тоже не работает. Я также пробовал Cp852 для окон, без эффекта.
Я знаю ограничения формата tar, но изменение его не является вариантом.
Спасибо за предложения,
Большое спасибо! Оно работает. Национальные символы после распаковки в Windows в порядке. Мне нужно изучить конструкцию '' new String (filename.getBytes («Cp1250»), «ISO-8859-1») и понять ее правильно. – pawelsto
Вы должны прочитать код TAR, чтобы посмотреть, как он работает. TAREntry не понимает кодировку. Он просто копирует младший байт символа UTF-16 в файл TAR. В Unicode младший байт полностью отображается на латиницу-1, поэтому мы используем Latin-1 для сохранения массива байтов. Это никак не связано с кодировкой Latin-1. –