目次
php作ったzipを解凍すると文字化け
phpで複数のファイルをまとめてダウンロードしたい→じゃあzipに圧縮してダウンロードしよう。
ということでZipArchiveを使ってzipファイルにしてダウンロードしましたがLhaplusで解凍するとファイル名が文字化けしました。
※因みに、エクスプローラーで開くと文字化けしません。
原因は文字コード
調べたところ、原因は文字コードにあったらしい。
zipに格納された日本語ファイル名の文字コードはCP932なのに、Windows環境ではZipArchiveで圧縮するときにUTF-8とみなして変換してしまうのだとか。
※因みに、linux環境で圧縮した場合は問題ないらしいです。
mb_convert_encodingで解決
エクスプローラーで開くと文字化けしないとはいえ、不便に違いないので直すことに。
文字コードをUTF-8にしてしまうのであれば、addFileするときにCP932に変換してやればいいので、
追加するファイル名をmb_convert_encodingでエンコードする。
$zip->addFile($filePath, mb_convert_encoding($fileName, 'CP932', 'UTF-8'));
これで無事Lhaplusでも解凍できました。
めでたしめでたし。