2010-11-18 17 views
2

Java(jdk、ant.jarまたはcommons-compress)を使用して.zipファイルを作成します。Javaで作成された.zipファイルが中国語(utf-8)をサポートしていません

しかし、ZipEntryの名前に英語以外のもの(たとえば中国語、日本語)が含まれていると、WinRARまたはWindows Compress(WinRARでcommons-compress displayが正しく表示されます)に解読できないコードが表示されます。

誰が私を助けることができますか?

+0

は確かに、圧縮しますか?何かを圧縮することは、文字セットに依存してはいけません。 @アリソン、 – Armand

+0

です。ファイル名のcharsetは異なります。 –

答えて

2

Top 25 java bugのいずれかに当てはまりました。

これは既に解決済みです。悪いニュースそれはJDK7でのみ修正されています。詳細については、this entryを参照してください。

代わりにArcmexer(読み取り専用)を使用できます。

+0

ブログの記事でJDK 7と書かれています。 –

+0

が固定されています。代替案が追加されました。 –

+0

ありがとうございます。私はまだ解決策を見つけることができませんが、おそらくこれは私のマネージャーを解決することができます。^_ ^ –

0

7-Zip-JBindingを見てください。これは7zip用のJavaラッパーです。

1

apacheのコモンズを使用してこれを試すには、それはちょうどあなたがファイルを表示するために使用しているプログラムに問題はありません

import java.io.*; 
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; 
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; 
public class ZipFiles { 
    public static void main(String[] args) throws Exception{ 
     ZipArchiveOutputStream zipOut = new ZipArchiveOutputStream(new FileOutputStream("测试.zip")); 
     zipOut.setEncoding("Cp437"); // This should handle your "special" characters 
     zipOut.setFallbackToUTF8(true); // For "unknown" characters! 
     zipOut.setUseLanguageEncodingFlag(true);        
     zipOut.setCreateUnicodeExtraFields(
     ZipArchiveOutputStream.UnicodeExtraFieldPolicy.NOT_ENCODEABLE); 
     zipOut.putArchiveEntry(new ZipArchiveEntry("测试.xml")); 
     zipOut.putArchiveEntry(new ZipArchiveEntry("test.xml")); 
     zipOut.closeArchiveEntry(); 
     zipOut.flush(); 
     zipOut.close(); 
    } 
} 
関連する問題