Skip to content

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

@MMP0

Description

@MMP0

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

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions