パンくずリスト
  • ホーム
  • 文字化け
タグ:文字化け
ZIPファイル解凍時の「文字化け」と対処法 (Linuxにて)

PCでいろんな作業をしていると、「文字化け」という現象に出くわす時がたまにある。これは、日本語の入力システムの多様さに由来している。

 

まだ、いまのように、Windowsがなかった時代、MS-DOSというオペレーティングシステムが全盛だったころ、日本語の文字入力は、マイクロソフトのDOSでは、shift-JIS、NECのPC9801系列ではJIS、UnixではEUCというまったく別な文字コードが使われていた。

 

また、デリミタ(Delimiter)とよばれた区切りコードも、キャリッジリターン[CR] 、ラインフィード[LF]、あるいは、キャリッジリターン+ラインフィード[CR+LF]というように、何種類かあった。実は、これらの間を互いに変換してくれるフリーソフトウェアも存在した。私もよく利用させていただいた記憶がある。

 

Windowsが全盛となった現在、これらのことはほとんど意識しなくても済むようになった。なぜならば、システムが自動的に変換してくれて、これらの違いを吸収してくれるからである。

 

私のように、Linuxを使っていても、このあたりは、あまり意識していない。ただ、「文字化け」は時々起こる。特に、Windowsで作成したファイルがWindowsで圧縮された場合、このZIPファイルをLinuxで解凍しようとすると、文字化けとなる。この問題は、長い間、悩みの種であった。(私の場合は、Dual BootのPCを使っているので、いったんWindowsを起動し、解凍した後に、Linuxを起動して読み込む、といった操作をしていた。)

 

だが、昨年、ひとつのスクリプトを見つけた。このスクリプトは、たったひとつの点をのぞいてすばらしいものであった。一年ほど使ってみて、使い慣れたものなので、ここに紹介させていただこうとおもう。(*)

 

========== (ここから) ==========

#!/usr/bin/perl

use Archive::Zip;

use Encode;

 

my $zip = Archive::Zip->new($ARGV[0]) or die;

for ($zip->members) {

$zip->extractMember($_, encode('UTF-8', decode('CP932', $_->fileName)));

}

========== (ここまで) ==========

 

この部分を例えば、「xunzip.pl」などのファイル名で保存し、

 

chmod 755 xunzip.pl

 

などで、
実行可能にしておく。そして、

 

./xunzip.pl sample.zip

 

のように使用する。

 

これは、Perl(パール)スクリプトとよばれるもので、perl-Archive-Zipというパッケージが必要となる。あらかじめ、インストールしておく。

 

私には、理解不足の点もあるが、Windowsで使用されているCP932という文字コードを、Linuxで使用されているUTF-8に変換するものである。とても便利なスクリプトなのである。

 

ただ、ひとつ、欠点は、パスワードがZIPファイルにかけられていると、使えないということ。なにか、やりかたはあるのだろうが、いまのところ、不明のままにしておいてある。

 

(2011-8-15)

 

 

(*) Nikkei Linux雑誌2010年9月号のp.50にサンプルとして掲載されていたものを引用させていただきました。

 

 

使っていますか? 2GBまで無料の「Dropbox」

 

 

あなたのお持ちの独自ドメイン、全て利用できます!

PCのダウンと復旧の顛末

いま自宅でメインに使用しているPCがダウンしてしまった。Windows側は立ち上がるのだが、Linux側がまったく立ち上がらない。

 

いままでは、Windows(XP)とlinux(TurboLinux Fuji)を住み分けして使っていた。私は、Linuxの初心者であって、あまり詳しいほうではない。それでも、インターネット、メール、文書作成など、大抵のことはLinuxでできるようになったが、どうしてもWindowsでないとできないものがあるので、デュアルブートの状態にしていた。

 

使っているPCはメインメモリが320MBで、およそ100GBのハードディスクを分割して、使っている。その構成は、WindowsXP(FAT32)、Linux(Boot)(ext3)、Linux(root)(ext3)、LinuxSwap、Data(FAT32)としている。また、起動時のエントリーは、MBM (Multi Boot Manager)を使用させてもらっている。

 

先日、ある時、突然に、LinuxのBootができなくなってしまった。MBMでは「Invalid」という表示でエラーになった。また、Windows側からLinuxのシステムを監視できるソフト「ext2fs」を使って見てみると、Linux(Boot)のセクションにあるべきファイルがすべて消えていることが判明した。

 

幸いなことに、データは別のパーティションにバックアップしてあったので、事なきを得たが、やっかいなことに遭遇したものだとおもったのである。

 

実は、たしか以前にもこんな現象があった。そのときは同じLinuxのDistributionを最初からインストールしなおしたという記憶があった。

 

それで、今回も、同様に行おうとおもったのだが、この際、別のLinuxを入れてみるのもいいかなとおもい、いろいろと試してみることにしたのであった。

 

まず、TurboLinux Client 2008 である。

 

インストール自体はうまくでき、無線LANの設定もOKであった。問題は、大きく2点。

 

ひとつは、マウントされるWindows領域の漢字名のファイルが文字化けしてしまうこと。いろいろ試したが、どうにも直らない。

 

もうひとつは、音楽関連のソフト「mplayer」がデフォルトでは動作しない。yumのシステムでインストールは一応されるようなのだが、動作させるとエラーになってしまう。そこで直接、ファイルをダウンロードし、自分でコンパイルして一応は動作させることができた。ただ、この場合も、画面の大きさの制御ができないという欠点がでてきた。

 

次に試したのが、Fedora 11である。

 

この場合は、システムのインストールと無線LANの設定は問題なくできた。

 

だが、「mplayer」が、しかし、うまく動作しない。これもyumのインストールでできたのだが、今度は、画面は問題ないものの、音のとびが発生してしまった。どうも画面と音がずれているようだ。その他の問題はなかったのだが、「mplayer」で音楽が聞けないことは、やはり問題であって、いまひとつ使うことにためらいを覚えてしまった。

 

これらの原因はおそらく、PCに搭載されているメモリにあるのだろう。なにしろ、320MBのメインメモリなので、最近のディストリビューションでは、PC側の負担が大きすぎているのだろうとおもっている。

 

なので、結論としては、やはり、いままで使用できていたTurbolinux Fujiを入れ直すということにしたのだ。そして、ほぼ一日をかけて、復旧させた。

 

メモリの少ないPCでは、最近のデストリビューションを扱うには無理があったようだ。

 

でも、本当になんとかできないのだろうか。もう少し、解決策を探ってみようかとも考えている。

 

(2009-8-17)