Java、档案、Linux和西里尔字母

3

我尝试使用Java编写一个归档程序,可以创建具有正确的西里尔文文件名的TAR或ZIP归档文件,然后在Linux中打开。在Windows中,我使用ant中的org.apache.tools.zip:

ZipOutputStream.setEncoding("cp866"); 

要获得它,但是Linux中的文件压缩程序(档案管理器)不理解它。在org.apache.tools.tar方法setEncoding()不存在。我还尝试使用一些支持西里尔字母的其他编码,如cp1251、utf-8、koi-8r,但没有结果。

1个回答

1

您的文件可能已正确创建,问题在于 file-roller。

众所周知,它无法检测文件名的编码。请参见这里这里

尝试直接从 shell 中使用unzip(文件名可能会乱码)或p7zip(也有java版本 - j7zip)。

对我来说,7zip 可以使用 utf8 编码的 Cyrillic 字符。File roller、Ark 和所有实际执行解压操作的工具都会损坏我的系统中的文件名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接