Android Nougat以降で日本語フォルダ名を含むZipFile
Android のNから、ZipFileのentriesなどでZipEntryを取得する時に、 Windows環境で日本語のフォルダ名を含む状態でExplorerなどから作ったzipなどだと、
IllegalArgumentException: MALFORMED
などというExceptionが上がるようになってしまった。 ZipFileのコンストラクタにCharsetが追加されて、この影響でデフォルトがUTF8になったせいっぽい。
Stackoverflow: Unzipping a file with special characters in filenames from API24 upward
Cp932とかCp942を指定したらUnsupported Charsetだとかいうruntime exceptionが上がってきた。 とりあえずCp437を指定したら動いたが、 このエンコーディングをAndroidのどの環境がサポートしているかはよくわからない。
まぁどっちにしろもとのコードでもIlegalArgumentExceptionは上がるのだから、 とりあえずNよりあとの場合、1つ目のzipエントリを取り出してみてexceptionだったらCp437を指定する、 というコードを足しておく。