日本語圏のZIPファイルは格納された日本語ファイル名がCP932(Shift_JIS)であることは有名だが、最新の(恐らくPHP7.0.8以降の?)PHPでは単にgetNameIndexしたファイル名をmb_convert_encodingしてもファイル名は壊れる。 どうやらZipArchiveがgetNameIndexする際に、勝手に文字コードを判定してUTF-8かCP437(なんで?)と見なして変換を掛けてしまうようで、CP932の生値が取れない。 この場合、CP932の生値が欲しい時はgetNameIndexにZipArchive::FL_ENC_RAWを付けてやると文字コード判定を無効にできる。 つまり $name = $zip->getNameIndex($idx, ZipArchive::FL_ENC_RAW); $name = mb_convert_encoding($nam