title: ZipUtil.unzip の無効な CEN ヘッダー(不正なエントリ名)の解決方法
date: 2021-08-31 12:00:54
toc: true
category:
- 技巧
tags: - 技巧
- 解決
- エラー
- 7-zip
他のプラットフォームで解凍すると、7-zip で圧縮された zip ファイルの中には、中国語のファイル名が文字化けしています。オンラインで調査した結果、7-zip を使用して zip ファイルを圧縮する際に、パラメータ cu=on を使用して、ファイル名を UTF-8 形式で強制的にエンコードすることで、他のプラットフォームで正常に解凍できることがわかりました。
以下の図は、7-zip で中国語のファイル名を使用して zip 形式で圧縮し、cu=on パラメータを使用して中国語のファイル名を UTF-8 で強制的にエンコードしたものです。
via。https://bbs.360.cn/thread-6400121-1-1.html
7-zip 関連のパラメータ#
圧縮#
Parameter Default Description
x=[0 | 1 | 3 | 5 | 7 | 9 ] 5 圧縮レベルを設定します。
m={MethodID} Deflate メソッドを設定します:Copy、Deflate、Deflate64、BZip2、LZMA、PPMd。
fb={NumFastBytes} 32 DeflateエンコーダーのFast Bytesの数を設定します。
pass={NumPasses} 1 Deflateエンコーダーのパス数を設定します。
d={Size}[b|k|m] 900000 BZip2の辞書サイズを設定します。
mem={Size}[b|k|m] 24 PPMdの使用メモリサイズを設定します。
o={Size} 8 PPMdのモデルオーダーを設定します。
mt=[off | on | {N}] on マルチスレッドモードを設定します。
em={EncryptionMethodID} ZipCrypto 暗号化メソッドを設定します:ZipCrypto、AES128、AES192、AES256
tc=[off | on] off ファイルのNTFSタイムスタンプを保存します:変更時刻、作成時刻、最終アクセス時刻。
cl=[off | on] off 7-Zipは常にファイル名にローカルコードページを使用します。
cu=[off | on] off 7-Zipは非ASCII文字を含むファイル名にUTF-8を使用します。
デフォルトでは(cl および cu スイッチが指定されていない場合)、7-Zip はローカルのコードページでサポートされていないシンボルを含むファイル名にのみ UTF-8 エンコーディングを使用します。
x = [0 | 1 | 3 | 5 | 7 | 9]#
圧縮レベルを設定します。x = 0 はコピーモード(非圧縮)を意味します。
Deflate/Deflate64 設定:
Level NumFastBytes NumPasses Description
1 32 1 最速
3 速い
5 標準
7 64 3 最大
9 128 10 ウルトラ
x = 1 および x = 3 では、Deflate メソッドが高速モードで圧縮されます。
BZip2 設定:
Level Dictionary NumPasses Description
1 100000 1 最速
3 500000 速い
5 900000 標準
7 2 最大
9 7 ウルトラ
fB = {} ワードサイズ#
Deflate/Deflate64 エンコーダーの Fast Bytes を設定します。範囲は 3 から 258 までです(Deflate64 の場合は 257)。通常、大きな数字はより良い圧縮率とより遅い圧縮プロセスを提供します。大きな Fast Bytes パラメータは、同じバイトシーケンスを含む長いファイルの圧縮率を大幅に向上させることができます。
pass = {}#
Deflate エンコーダーのパス数を設定します。Deflate の場合、1 から 15 の範囲で設定できます。BZip2 の場合、1 から 10 の範囲で設定できます。通常、大きな数字はより良い圧縮率とより遅い圧縮プロセスを提供します。
d = {} サイズ [b | K | M]#
BZip2 の辞書サイズを設定します。サイズはバイト、キロバイト、またはメガバイト単位で指定する必要があります。辞書サイズの最大値は 900000b です。[b | k | m] のいずれの記号も指定されていない場合、辞書サイズは DictionarySize = 2 ^ Size バイトとして計算されます。
mEM = {} サイズ [b | K | M]#
PPMd のメモリサイズを設定します。サイズはバイト、キロバイト、またはメガバイト単位で指定する必要があります。最大値は 256 MB = 2 ^ 28 バイトです。デフォルト値は 24(16MB)です。[b | k | m] のいずれの記号も指定されていない場合、メモリサイズは(2 ^ Size)バイトとして計算されます。PPMd は圧縮と解凍に同じ量のメモリを使用します。
o = {} サイズ#
PPMd のモデルオーダーを設定します。サイズは [2,16] の範囲内で指定する必要があります。デフォルト値は 8 です。
mt = [off | on | {N}]#
マルチスレッドモードを設定します。複数のプロセッサまたはマルチコアシステムを持っている場合、このスイッチを使用して速度を向上させることができます。このオプションは圧縮(任意のメソッドを使用)および BZip2 ストリームの解凍にのみ影響を与えます。マルチスレッドモードの各スレッドは 32 MB の RAM をバッファとして使用します。{N} が指定されている場合、7-Zip は N 個のスレッドを使用しようとします。