Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ZIP 圧縮でマルチバイト文字を含むファイル名が文字化けする問題 #78

Open
MMP0 opened this issue Jan 22, 2020 · 0 comments

Comments

@MMP0
Copy link

MMP0 commented Jan 22, 2020

ZIP 圧縮の際に、日本語などマルチバイト文字を含むファイル名が文字化けします。

var zip = new Zlib.Zip();
zip.addFile([], { filename: new TextEncoder().encode('あいうえお.txt') });
zip.compress();

Current

zlib.js/src/zip.js

Lines 51 to 55 in 24942f5

Zlib.Zip.Flags = {
ENCRYPT: 0x0001,
DESCRIPTOR: 0x0008,
UTF8: 0x0800
};
src/zip.js 内の Zlib.Zip.Flags で、UTF-8 でエンコードされたファイル名の場合に使用する ファイル属性フラグ 0x0800 が定義されていますが、圧縮処理を行うコードでは 一度も使用されていないようです。

試しに、自分のほうで

flags = 0;

flags = Zlib.Zip.Flags.UTF8;

に置き換えてみたところ、ファイル名が正しく表示されました。

UTF-8

デフォルトで UTF-8 エンコーディングのファイル属性フラグを使用する、および/または ファイル名の文字コードに関する何らかのオプションを用意したほうがよいかと思います。

ご検討のほど よろしくお願いします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant