Java,Archives,Linux&西里尔

时间:2011-03-09 02:07:18

标签: java linux character-encoding tar

我尝试在java中编写一个归档程序,创建TAR或ZIP存档,使用正确的西里尔文件名,然后在linux中打开。 在Windows中我使用org.apache.tools.zip,来自ant:

ZipOutputStream.setEncoding("cp866"); 

得到它,但linux中的文件滚动(归档管理器)不明白它。在org.apache.tools.tar方法中,setEncoding()不存在。另外我尝试使用其他一些支持Cyrillic的编码,例如cp1251,utf-8,koi-8r,但它没有结果。

1 个答案:

答案 0 :(得分:1)

您的文件可能正确创建文件,问题出在文件路由器上。 众所周知,它无法检测文件名的编码。请参阅herehere

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

7zip适用于我,使用西里尔字符的utf8编码。 File roller,Ark以及其他所有实际执行解压缩的文件都会破坏我系统中的文件名。