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

    めでたしめでたし。

  • 相关阅读:
    spark foreachPartition
    spark mapPartition
    spark union intersection subtract
    spark join 类算子
    spark action 算子
    卷展栏模板
    锁定/解锁
    3D一些提示信息
    文件对话框多选
    吸取属性
  • 原文地址:https://www.cnblogs.com/caicaizi/p/16139187.html
Copyright © 2020-2023  润新知