ZIPファイルの取り扱いで困ったときのメモ

ホームページ制作でデザインデータ等のやりとりでZIPファイルがよく使われますが、ZIPファイルの取り扱いで困ったときの子ネタをご紹介します。

相手からのZIPファイルが壊れている (データが途中まで)

大容量のZIPファイルを転送してもらったのはいいけど、なぜか、データが途中までで、ZIPファイルが壊れている状態。いくら、ZIP解凍ソフトで解凍しようともエラーがでて解凍できない。

そこで、Windowsなどでは信用できないので、Linuxターミナルからunzipコマンドで解凍してみると、下記のようなエラーがでました。どうやら、終了までデータがない様子。または、マルチパート・アーカイブの一部なのか。

# unzip hoge.zip
Archive:  hoge.zip
End-of-central-directory signature not found.  Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive.  In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of hoge.zip or
hoge.zip.zip, and cannot find hoge.zip.ZIP, period.

そこで、「[osx]破損しているzipファイルを解凍する」を参考に、zipファイルを修復。

# zip -FF hoge.zip --output hoge2.zip
Fix archive (-FF) - salvage what can
        zip warning: Missing end (EOCDR) signature - either this archive
                     is not readable or the end is damaged
Is this a single-disk archive?  (y/n): y
  Assuming single-disk archive
Scanning for entries...
 copying: *******  (582347622 bytes)

運が良ければ、上記の修復した「hoge2.zip」が解凍でき、データの一部だけの可能性あるのですが、データが取り出せます。

MacやLinuxで圧縮したZIPファイルをWindowsで解凍

MacやLinux側で特別なことをしない限り、Windows側で日本語のファイル名が文字化けしちゃいます。MacやLinuxでは、ファイル名がUTF8の文字コードですが、WindowsではCP932(Shift_JIS)だからなのですが、いちいち、MacやLinux側で文字コード変換&ZIP化しなおすのも面倒です。そこで、下記のような方法があるようです。ちなみに、試してないのですが、Windows8のOS標準のZIP解凍では問題ないようです。

Microsoftの修正プログラムを適用

[修正プログラム] Windows 7 または Windows Server 2008 R2 では、.zip ファイルの解凍後のファイル名が破損しています。
http://support.microsoft.com/kb/2704299/ja

文字コード・エンコード対応の解凍ソフトを使う

文字コード変換対応の下記のような解凍ソフトを使ってみる。

Explzh for Windows
http://www.ponsoftware.com/

CubeICE
http://www.cube-soft.jp/cubeice/

以上ですが、何かのご参考になれば幸いです。

※上記、ソフトの使用および上記の記事内容に関しては、すべて自己責任でご判断をお願い致します。