私の元に「ファイル名が文字化けして正常に解凍出来ない」というZIPが回ってきました。
どれどれとLhaplusで解凍してみると見事に文字化け、もちろんWindowsXPのエクスプローラの機能で展開しようとしてもファイル名が文字化けしてうまくみれません。
そこで、今度はバイナリエディタを使って、中身をみてみるとZIPファイルの体裁は確保されており正常そうな状態。
ただ、ここでファイル名の日本語が使われていると思われる部分が既に化けているため、これが原因のようです。
で、とりあえず、バイナリエディッタのキャラセットを変えて文字コードの特定をしようと思ったのですが、「Shift-JIS」「EUC」「Unicode(UTF-16)」のどれを選んでもダメ。
しょうがないので、テキストエディッタでZIPを開いてさらに検証したところUTF-8でファイル名が正常に読めるようになりました。
で、よくよく調べてみると
原因は Mac OS X ではファイル名を Unicode というコード体系で管理しているのに対して他の OS では EUC や Shift-JIS コードを用いているからです。
で、UTF-8ファイル名が入ったZIPをShift-JISに変換して解凍出来るソフトが無いかを調べたんですが、ちょっと調べたところでは見つからず。
時間もあんまり無かったのでLinux上でちゃちゃっと変換してしまうことにしました。
私がやったやり方は、まずLinuxのSAMBAで共有している領域へ適当なフォルダを新しく作り、問題のZIPファイルをSAMBA経由で転送して
unzip hoge.zipで解凍します。
するとやはり文字化けしたファイルが作成されるので、それはちょっと放置して
で、動作するようになったらSAMBAがディスクに書き込む時のエンコードとして指定しているEUCに変換するために
convmv -r -f utf8 -t euc-jpとして、変換テストを行い
*
convmv -r -f utf8 -t euc-jpで文字コードをEUCに変更しました。
* --notest
そうすると、SAMBA上からは文字化けが治るため、後は普通にエクスプローラから転送して取り出し完了。
いやいや、楽なものですね。
というかLinux上で解凍さえしてしまえばいくらでも方法はあるもので、SAMBAのエンコードがそもそもUTF-8になっていればコンソール上で解凍さえしてしまえば普通にデータを取得出来ますし、UTF-8のファイルをFTP経由でダウンロード出来るらしいSmartFTPを使うという手もあります。
まぁ、Linuxは日本語版WindowsのようにShift-JIS一色な世界じゃないので、Linuxさえ持っていけば文字コード関連の問題は大抵何とかなるんじゃないかと思います。
Posted by Takuchan at 2005年03月17日 13:59 | トラックバック(1)linuxでだったら
LANGをutf-8にして普通にunzipしてもだめなのかな?
目的がWinユーザに圧縮した状態で返すためだったんで・・・
Posted by: Takuchan at 2005年04月10日 19:41