2012年10月7日日曜日

7-Zip で、ファイル名が UTF-8 エンコードされた zip ファイルを生成する方法

備忘録

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 SP1
7-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 で開くと、正常なファイル名で表示される。