ZipArchiveEntry charset-encodingエラー

apache-commons-compress-1.x APIを使用してファイルzipを作成する必要があります。 私は次のコードを使用しました:

File fileZip = new File("D:\\file.zip");
ZipEncoding zipEncoding = ZipEncodingHelper.getZipEncoding("UTF8");
ZipArchiveOutputStream zipOut = new ZipArchiveOutputStream(fileZip);
zipOut.setEncoding("UTF-8");

File entryFile = new File("D:\\attività.jpg");
String entryName = entryFile.getName();
entryName = new String(entryName.getBytes("UTF-8"), "UTF-8");

ZipArchiveEntry entry = new ZipArchiveEntry(entryName);
entry.setSize(entryFile.length());

FileInputStream fInputStream = new FileInputStream(entryFile);
zipOut.setUseLanguageEncodingFlag(true); 
 zipOut.setCreateUnicodeExtraFields(ZipArchiveOutputStream.UnicodeExtraFieldPolicy.ALWAYS);
zipOut.putArchiveEntry(entry);
zipOut.write(IOUtils.toByteArray(fInputStream));
zipOut.closeArchiveEntry();

zipOut.flush();
zipOut.close();

zipエントリファイル名にエンコードエラーがあります。 zip managerで作成されたウィンドウxpでzipファイルを開くと、ファイル名は attivit +á.jpgになります。 お願い助けて。

1
entryName = "attivit \ u00E0-jpg" を使用できますか?これにより、.classが適切なエンコーディングを使用することが保証されます。 getBytesなどは余計です。 Windowsがそのzipで何をしているのか見るために置かれています。
追加された 著者 Joop Eggen,
コントロールパネル - >地域と言語のオプション - >アドバンス(タブ); 65001(UTF-8)およびその他のコードページ(イタリア語)があります。
追加された 著者 Michel Foucault,
私が試してみました。同じ問題。
追加された 著者 Michel Foucault,
あなたはXPの内蔵ジップマネージャを使用していますか? UTF-8を使用していますか?出力は8ビットの文字セット(CP1252など)のように見えます。
追加された 著者 Ulf Jaehrig,

1 答え

行う

entryName = zipEncoding.encode("attivit\u00E0.jpg");
0
追加された
その後、問題はWindows側で発生する可能性が最も高いです。あなたはまだ "UTF-8" i.oを試すことができます。 zipエンコーディング用の "UTF8"。または、自分自身でエンコードを行います: "attivit%U00E0.jpg" と思います。最初に7ZipまたはWinZipでジップを試してみてください。
追加された 著者 Joop Eggen,
その後、この方法はWindowsでは機能しません。 "Windows-1252"またはそのようなi.oを使用してください。 UTF-8、およびzipEncoding.encodeを忘れてしまいます。
追加された 著者 Joop Eggen,
私はあなたのWindowsのエンコーディングを知らない。 zipファイルは、あなたのヨーロッパ地域にローカライズされます。 Windows-1252はフランス/ドイツ/イタリア/ ...です。 ISO-8859-1に基づいています。 System.getProperty( "file.encoding")を参照したり使用したりすることができます。申し訳ありませんが非常に不満です。
追加された 著者 Joop Eggen,
私はWindows上でUTF-8を期待したことはありません。 Windowsでattitá.jpgを作成し、Windowsでzipし、javaで問題を調べることができます。探偵の仕事は、問題を解明する必要があります。 charダンプ(多分 は2つの文字 a + 'です)。
追加された 著者 Joop Eggen,
zipエントリ名は常にattivit +á.jpgです
追加された 著者 Michel Foucault,
WinZipと7Zipでは問題ありません。
追加された 著者 Michel Foucault,
まだエンコーディングエラーがあり、ファイル名は "attivitÓ.jpg"です。
追加された 著者 Michel Foucault,
System.getProperty( "file.encoding")はUTF-8を返します
追加された 著者 Michel Foucault,
問題はWinrar 3.50にあります。新しいwinrar版では、このiusseは修正されています。
追加された 著者 Michel Foucault,