0

私のプロジェクトでは、zip をアップロードする機能があります。

ユーザーがzipをアップロードすると、システムがそのファイルを抽出し、フォルダー構造をユーザーに表示します。

zip ファイルに Õ.txt のような名前のファイルが含まれている場合、O.txt のように表示されます。

ZipFile zipFile = new ZipFile(filePath, Charset.forName("UTF8"));
Enumeration entries = zipFile.entries();
while(entries.hasMoreElements())
{

ZipEntry entry = (ZipEntry)entries.nextElement();
System.out.println(entry.getName());

}

上記は、zipエントリを読み取るための私のコードです。

現在、エントリの名前を取得しようとすると、Õ.txt ではなく O.txt が表示されます。

このコードを JDK 7 でテストしましたが、結果は同じです。

CP437、IBM437、ISO-8859-1、ISO-8859-1 などのさまざまなエンコード タイプも試しましたが、結果に変化はありませんでした。

zipファイルからエントリを取得するときにすべての文字をサポートできる方法を教えてください

ありがとうございます。

4

1 に答える 1

0

必ずしもZIPファイルへのアクセス方法ではなく、環境に問題があるようです。チェックリストは次のとおりです。

  • ZIP ファイルには、その名前の UTF-8 でエンコードされたエントリが本当に含まれていますか? 7-Zip などのツールを使用して確認します。
  • JVM は正しい文字セットを使用していますか? システム プロパティ file.encoding を確認してください。
  • 出力端末/ウィンドウのエンコーディングはこの設定と一致していますか?

結局のところ、処理チェーンのすべての要素が正しい設定を使用している場合にのみ、結果は正しくなります。

于 2012-08-06T12:16:48.357 に答える