2015/04/12

Windowsから送られてきたzipファイルを解凍する(日本語ファイル名が含まれている場合)

概要


Windowsで作成したzipファイルをlinux上で解凍する際、日本語ファイル名やフォルダ名が文字化けする問題が発生。
Windowsサーバでzip圧縮したファイルをLinuxサーバで解凍することが何度かあったので備忘録として記しておきます。

原因


Windowsで作成したzip圧縮のファイル名エンコードはCP932(Shift_JIS)となっているため。
CP932とは: Microsoftコードページ932
Mac,Linuxでのzip圧縮のエンコードはUTF-8。Macでのunzipコマンドでの解凍では文字コードを自動判別してくれるので、問題ないが、linuxでのunzipコマンドでは文字化けしてしまうので、パッチをあてて修正版unzipつくる必要がある。ディストリビューションによって対処方法がまちまちなので、ここではその対処法はとりません。


対処法


use with Gist Search 引数に与えたzipファイルを解凍する際にエンコードを変更するのみ



使用方法

上記perlスクリプトをファイル名unzip-cp932にてパスのあたっている/usr/bin以下に作成
そして実行モードに変更 chmod +x unzip-cp932
unzip-cp932 hoge.zip


注意

CP932(Shift_JIS)以外のエンコードは化けるので注意。
Mac,Linuxで作成したzip圧縮のフォルダやファイル名のエンコードはUTF-8なので、unzip-cp932は使えません。
あくまでWindowsで作成されたzipファイルを解凍する際に使用。


他の例

windowsから送られてきたzipファイルを解凍するとファイル名が大変なことになっている時
上記のunzip -Ocp932のOcp932オプションを使用できず、解凍できない場合があった。
WinからLinuxへzipファイルなど持ってきた時の文字化け対処方法
上記、convmvを使用する場合