日本語ファイル名対応 unzip, JDK7
Windows上で作成されたzipをUN*X上でどうしても展開できなかったことはないでしょうか?ざっとググってみましたがUbuntuでの対応が早かったようです。JavaとSolarisでの対応を確認してみました。
Javaでの対応は以下のブログに説明されています。jarコマンドでの対応はまだ確認できてませんが以下ブログ中のソースをJDK7でコンパイル、実行すれば動作確認できます。
Non-UTF-8 encoding in ZIP file : Xueming Shen's Blog
/usr/bin/unzip での対応はOpenSolarisに入っています。私はOpenSolarisから/usr/bin/unzipファイルをSolaris10にコピーし動作確認してみました。
Bug ID: 6719511 unzip should support non ascii file name
以下に登録されているテスト用zipファイルでテストしたところ、両方ともSJIS日本語ファイル名のファイルを展開できましたが違う結果となりました。Javaでは抽出されたファイル名のエンコーディングがLANG環境変数の設定に一致しました。一方unzipではシフトJIS固定のようでした。特殊文字が含まれている場合、/usr/bin/unzipを使う方が良いかもしれません。
Unzip 6.0 is missing option -O - Info-ZIP Discussion Forum
Javaでの対応は以下のブログに説明されています。jarコマンドでの対応はまだ確認できてませんが以下ブログ中のソースをJDK7でコンパイル、実行すれば動作確認できます。
Non-UTF-8 encoding in ZIP file : Xueming Shen's Blog
zip is a stripped-down version of the Jar tool with a "-encoding" option to support non-UTF8 encoding for entry name and comment
/usr/bin/unzip での対応はOpenSolarisに入っています。私はOpenSolarisから/usr/bin/unzipファイルをSolaris10にコピーし動作確認してみました。
Bug ID: 6719511 unzip should support non ascii file name
For example, convertiong Japanese sjis, % unzip -O sjis.zip
以下に登録されているテスト用zipファイルでテストしたところ、両方ともSJIS日本語ファイル名のファイルを展開できましたが違う結果となりました。Javaでは抽出されたファイル名のエンコーディングがLANG環境変数の設定に一致しました。一方unzipではシフトJIS固定のようでした。特殊文字が含まれている場合、/usr/bin/unzipを使う方が良いかもしれません。
Unzip 6.0 is missing option -O - Info-ZIP Discussion Forum
Option -O that allows you to set an encoding for filenames is missing in the latest release.
To test I made a small zip file in Windows XP that has filenames encoded in shift-jis and tried to open it in Linux in UTF8 environment.