ZIP 圧縮の際に、日本語などマルチバイト文字を含むファイル名が文字化けします。
var zip = new Zlib.Zip();
zip.addFile([], { filename: new TextEncoder().encode('あいうえお.txt') });
zip.compress();

|
Zlib.Zip.Flags = { |
|
ENCRYPT: 0x0001, |
|
DESCRIPTOR: 0x0008, |
|
UTF8: 0x0800 |
|
}; |
src/zip.js 内の
Zlib.Zip.Flags で、UTF-8 でエンコードされたファイル名の場合に使用する ファイル属性フラグ
0x0800 が定義されていますが、圧縮処理を行うコードでは 一度も使用されていないようです。
試しに、自分のほうで
を
flags = Zlib.Zip.Flags.UTF8;
に置き換えてみたところ、ファイル名が正しく表示されました。

デフォルトで UTF-8 エンコーディングのファイル属性フラグを使用する、および/または ファイル名の文字コードに関する何らかのオプションを用意したほうがよいかと思います。
ご検討のほど よろしくお願いします。
ZIP 圧縮の際に、日本語などマルチバイト文字を含むファイル名が文字化けします。
zlib.js/src/zip.js
Lines 51 to 55 in 24942f5
src/zip.js内のZlib.Zip.Flagsで、UTF-8 でエンコードされたファイル名の場合に使用する ファイル属性フラグ0x0800が定義されていますが、圧縮処理を行うコードでは 一度も使用されていないようです。試しに、自分のほうで
zlib.js/src/zip.js
Line 324 in 24942f5
に置き換えてみたところ、ファイル名が正しく表示されました。
デフォルトで UTF-8 エンコーディングのファイル属性フラグを使用する、および/または ファイル名の文字コードに関する何らかのオプションを用意したほうがよいかと思います。
ご検討のほど よろしくお願いします。