banner
biuaxia

biuaxia

"万物皆有裂痕,那是光进来的地方。"
github
bilibili
tg_channel

ZipUtil-unzip-invalid-CEN-header-bad-entry-nameの問題を解決する

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 で強制的にエンコードしたものです。

d4a3c47d6a7d7b8b677741dcdbb7a435.jpg

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 個のスレッドを使用しようとします。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。