日本語を含むZIPファイルを圧縮したのと違うのOSで解凍する際、文字化けが発生することがあります。
以下調べた対処法を書いていきます。
Windowsで圧縮したZIPをMac、Linuxで解凍する場合、逆にMac等で圧縮したZIPをWindowsで解凍する場合の両方で文字化けは起こりえます。
原因
Mac、Linuxではファイルを圧縮する際ファイル名をutf-8でエンコードするのに対し、Windowsではファイル名をCP932(Shift_JIS)でエンコードするのが原因。
ZIP (ファイルフォーマット) - Wikipedia
対処法
Mac,Linux→Windows
Macで作られたファイルをWindowsで開く場合
Windows標準の解凍機能を用いる場合、修正プログラム( http://support.microsoft.com/kb/2704299/ja )を使うことでWindows 7 または Windows Server 2008 R2では文字化けせずに解凍できるようになります。
Windows 8からは何もせずとも解凍できるようになっているようです。その他の環境の場合、Explzh等のフリーソフトを使うことをオススメします。
Windows→Mac,Linux
Windowsで作られたファイルをMac、Linuxで開く場合
Mac標準のファイルアーカイバー、Ubuntuの日本語Remixのunzipを使っている場合、文字コードを自動で判別してくれるため対策の必要はありません。
それ以外の環境の場合、(Linux想定)以下の様な対処法があります。
- patchが当たった修正版unzipを使う
- unarを使う
- 化けたファイル名をconvmvで修正する
unzip
Ubuntuで化けるときはとりあえず http://www.ubuntulinux.jp/japanese の Japanese Teamのパッケージレポジトリを追加する に書いてあることを実行するのをオススメします。
unzipが修正され、ファイルアーカイバ等でShift_JISでファイル名がエンコードされたZIPファイルを開けるようになります。
他のディストリビューションだとソース落としてパッチを当ててビルドすることで修正版unzipを導入できますがそんなこと出来る人はこんなところきっと見ないので割愛。
unar
文字コード判別機能付き解凍コマンド
WindowsのZIPファイルを解凍するだけでなく、色々な形式の圧縮ファイルを解凍できるコマンドです。
解凍するだけならunzipもtar xfももう要りません。
インストール方法は省略
convmv
ファイル名をiconvを使ってOSのロケールに修正するコマンド
他の原因でファイル名が化けた際や、Windows用にShift_JISで圧縮したファイルを作りたい場合にも
使えます。
使い方はこんな感じ
convmv -f utf8 -t shift_jis *.txt --notest