#navi(../)
* WindowsのシフトJISファイル名を含むzipファイルを解凍する方法 [#t9f19cca]
本資料はCentOS5.4にて実行し確認しました。~
Windowsで作成されたzipファイル内のファイル名はシフトJISのためCentOSのunzipコマンドを利用すると文字化けしてしまいます。~
#ref(unzip-ja-01.png)
#br
(Ubuntuであればunzipコマンドが日本語をサポートしているため問題なく解凍できます。)~
unzipソースにパッチを当てるのが正攻法だと思うのですがperlにてスクリプトを書きましたので以下に使用方法を記します。

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 関連資料 [#w4eff767]
-[[zip形式で圧縮する方法>逆引きUNIXコマンド/zip形式で圧縮する方法]]
-[[Linuxでパスワード付きzip圧縮を行う方法>逆引きUNIXコマンド/Linuxでパスワード付きzip圧縮を行う方法]]
-[[Linuxでパスワード付きzipファイルのパスワードを解除する方法・zipcloack>逆引きUNIXコマンド/パスワード付きzipファイルのパスワードを解除する方法]]
-[[すでにあるzipファイルにパスワードを設定する方法・zipcloack>逆引きUNIXコマンド/すでにあるzipファイルにパスワードを設定する方法]]


* Archive::Zipのインストール [#nfeed994]
CPANにてArchive::Zipをインストールします。~
&color(red){注意}; インストールにはgccが必要です。~
インストールされていない場合はrootで以下のコマンドを入力しgccをインストールしてください。~
# &color(red){yum -y install gcc};~

** Archive::Zipのインストール方法 [#occbfc0f]
rootになり以下のコマンドを実行してください。~
コマンドを実行すると色々問い合わせをされるので基本的に「Enter」でOKです。~
当方が入力した部分は&color(red){赤字};にしてあります。~
途中でプロキシの設定がありますのでプロキシ経由の設定が必要な場合は Your ftp_proxy?やYour http_proxy?と問い合わせ表示がされたときに入力してください。

# &color(red){perl -MCPAN -e shell};~
    :~
Are you ready for manual configuration? [yes] ~
    :~
(1) Africa~
(2) Asia~
(3) Australasia~
(4) Central America~
(5) Europe~
(6) North America~
(7) Oceania~
(8) South America~
Select your continent (or several nearby continents) [] &color(red){2};~
    :~
(1) China~
(2) Hong Kong~
(3) India~
(4) Indonesia~
(5) Japan~
(6) Kazakhstan~
(7) Republic of Korea~
(8) Russia~
(9) Singapore~
(10) Taiwan~
(11) Thailand~
(12) Turkey~
Select your country (or several nearby countries) []  &color(red){5};~
    :~
(1) ftp://ftp.dti.ad.jp/pub/lang/CPAN/~
(2) ftp://ftp.jaist.ac.jp/pub/CPAN/~
(3) ftp://ftp.kddilabs.jp/CPAN/~
(4) ftp://ftp.nara.wide.ad.jp/pub/CPAN/~
(5) ftp://ftp.riken.jp/lang/CPAN/~
(6) ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/~
(7) ftp://ftp.u-aizu.ac.jp/pub/CPAN~
(8) ftp://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/~
Select as many URLs as you like (by number),~
put them on one line, separated by blanks, e.g. '1 4 5' [] &color(red){1 4 5};~
    :~
    :~
cpan> &color(red){install Archive::Zip};~
    :~
    :~
    :~
cpan> &color(red){quit};~

** CPANの設定を間違えてしまった場合の対処 [#p2af6dc3]
以下のコマンドで初期化できます。間違った場合に利用してください。

# &color(red){perl -MCPAN -e shell};~
cpan> &color(red){o conf init};~

* 作成スクリプト [#j3bebbc6]
#ref(unzip-sjis.pl)
 #!/usr/bin/perl
 use strict;
 use warnings;
 use Archive::Zip;
 use Encode;
 
 if (@ARGV != 1) {
   die "usage: $0 ZIPFILE\n";
 }
 my $zipfile = shift;
 if (! -e $zipfile) {
   die "$zipfile don't exist\n";
 } 
 my $zip=Archive::Zip->new($zipfile);
 my @items = $zip->memberNames();
 my $utf8name;
 foreach (@items) {
   my $utf8name = $_;
   Encode::from_to($utf8name, 'cp932', 'utf-8');
   print "extract : $utf8name\n";
   $zip->extractMember($_, $utf8name);
 }
 

*使用方法 [#ye72080f]
+上記スクリプトをダウンロードまたはカット&ペーストにて保存してください。
+chmodコマンドで実行権限をあたえてください。(下行例参照)~
$ &color(red){chmod +x unzip-sjis.pl};
+ unzip-sjis.pl zipファイル名で動作します。
#ref(unzip-ja-02.png)

#br
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
#br

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS