随笔 - 522  文章 - 0  评论 - 53  阅读 - 243万

phpでZipArchiveを使ったら日本語のファイル名が文字化けした話

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でも解凍できました。

めでたしめでたし。

posted on   caigan  阅读(728)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2017-04-13 Google Map Api 谷歌地图接口整理
2017-04-13 php去除换行符的方法小结(PHP_EOL变量的使用)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示