mac標準機能でWindows互換のZIPファイルを作成する方法【日本語対応】
macで送ったZIPファイルを解凍しても、文字化けなし、__MACOSフォルダはない、テキストもしっかり改行しています。
それなのにこんな問い合わせ受けたことありませんか?
- ZIPファイルが文字化けしていて読めないとクラアントさんからクレームを受けた
- __MACOSXフォルダは何の意味があるの?と問い合わせを受けた
- もらったZIPファイルをすべて展開すると予期しないエラーになって解凍できない
- テキストファイルが詰まっていて読みにくい。
macOSでは全く問題ないのになぜ?
メールで送ると文字化けしちゃうの!?
これ全部macOS特有の問題です。問い合わせたクラアントさんが正しいです。
クライアントさんの環境がWindowsの場合、文字化けや解凍できないなどの問題が発生します。
macOSには、フォルダやファイルを右クリック(2本指でタップ)するとZIP形式の圧縮ができる機能が備わっています。
フォルダを対象した圧縮ファイルを作成したZIPファイルをクライアントさんへ送っていませんか?
__MACOSXフォルダが作られています。日本語が含まれるファイルはWindowsで文字化けします。
ターミナルから以下コマンドでWindowsのエクスプローラーで見える__MACOSXフォルダの存在がわかります。
$ unzip -l zipファイル名
(圧縮ファイルの中に日本語があると???などの表記になります)
当ページで、macでWindowsユーザーへ送っても困らない圧縮ファイルの作成方法がわかります。
この記事でご紹介しているwindowszipプログラムはmacOS Catalina以降では動作しません。
$ ./local/bin/windowszip ./a.html
Fatal error: Uncaught Error: Class 'ZipArchive' not found in /Users/macyarounanoka/local/bin/windowszip:128
Stack trace:
#0 /Users/macyarounanoka/local/bin/windowszip(150): WindowsZip->Create('./a.html')
#1 {main}
thrown in /Users/macyarounanoka/local/bin/windowszip on line 128
理由:phpを利用しています。phpのZipArchiveがmacOS Catalinaでは標準利用できなくなりました。このため、記事でご紹介しているwindowszipプログラムが失敗します。
対策はあります。ただmacOS標準で利用するという前提が崩れます。
対策案1:brew経由でインストールできるphp7.3を使う
https://stackoverflow.com/questions/58618138/macos-catalina-class-ziparchive-not-found