日本語を含むZIPファイルを文字化けせず解凍する方法

  • 205
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

日本語を含む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/japaneseJapanese 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