備忘録
Windows 上で、ファイル名にマルチバイト文字を含む zip ファイルを作成し、iTunes 経由で iPad の GoodReader に転送して、GoodReader で解凍すると、ファイル名が文字化けする。理由は単純で、Windows 上で zip ファイルを作成すると、デフォルトでは、ファイル名が、cp932 (Shift-JISかも・・・)でエンコードされてしまうため。
および、iPad上では、(linux も)UTF-8 でファイル名が、エンコードされていることを、前提にしているのため。
したがって、逆もまた真なり。
解決策としては、いくつか考えられる
まず、ファイル名を UTF-8 でエンコードする圧縮形式を利用する場合、7zip 形式などがあるが、残念ながら GoodReader が未対応。
次の策は、、linux 上で圧縮する。これでもいいかも。試してないけど。
最後に、Windows 上でも、ファイル名を UTF-8 エンコードしてくれるツールを利用することだが、今回はこの方法にした。利用するツールは、7-Zip 。
環境
Windows 7 Professional 64bit SP17-Zip 9.28 (x64 edition) alpha バージョン
実施手順
7-Zip はインストール済みとする。圧縮対象(ここでは、books ディレクトリ)を右クリックし、コンテキストメニューの「7-Zip」⇒「圧縮...」を選択。
「書庫形式」を「zip」に設定。
「パラメータ」に「cu=on」を設定。
「cu」パラメータの説明は、「7-Zip uses UTF-8 for file names that contain non-ASCII symbols.」となっている。つまり、ASCII 文字以外が含まれている場合に、ファイル名を UTF-8 エンコードする。
ちなみに、この「パラメータ」というのは、コマンドラインの「-m」スイッチに指定するもの。「cu」パラメータは、 Zip 形式のときに有効となる。
詳細は、ググるか、ヘルプを参照。
最後に、「OK」ボタンを押下。
これで、ファイル名が UTF-8 エンコードされた zip ファイルが作成される。
Windows 上で確認する場合は、次のようにする。
zip ファイルを右クリックして、コンテキストメニューの「プログラムから開く」⇒「エクスプローラー」を選択。
エクスプローラーでは、cp932 でエンコードされている前提で、ファイル名を表示するため、UTF-8 エンコードされているファイル名は、見事に文字化けして見える。
この zip ファイルを、iTunes 経由で、GoodReader に転送し、解凍すると、見事に元のファイル名が、復元される。
ちなみに、7-zip で開くと、正常なファイル名で表示される。