Windows 仕様の Zip ファイルに含まれる各ファイルのファイル名を MacOS / Linux 環境で文字化けなしで確認する

Zip は仕様として、ファイル名のエンコーディング形式を指定する方法が用意されていないので、ASCII 以外では安全にファイル名を指定できない。 一方で、日本語を始めとする 非 ASCII 文字を含んだ名前のファイルというものはよくよくあって、実際には何らかのエンコーディング形式でもってファイル名を指定する。 このために一般的に使用されているエンコーディング形式は2つで、UTF-8(MacOS / Linux)と Shift_JIS (Windows)である。 ただ、MacOS / Linux と Windows 間でエンコーディング形式が違っているので、この OS 間で Zip ファイルの受け渡しを行うとファイル名の文字化けが頻発する。

Windows 以外の OS を常用している人なら誰しも経験したことがあるはずだが、ファイル名が文字化けしてしまうのは控えめに言って不便である。 なにか解決方法がないかと思い調べてみると、Windows 仕様の Zip 形式に対応するためのパッチが unzip コマンドで用意されているようだった。 それを使ってみても良かったのだけど、ファイル名をのぞくだけならサクッと Python で書けるだろうとおもったので5分で作ってみた。

gist.github.com

Gist に投稿した Python スクリプトでも、このように curl 経由で直接実行できる。

$ curl -sS https://gist.githubusercontent.com/msh5/cda7439eb1de26bc8e643b0372edb89b/raw/list_winzipped_filenames.py | python - ~/Downloads/xxx.zip
○×契約書.pdf
△□提案書.pdf

はい、便利!