From: Kikutani Makoto Date: 1999-09-22T09:17:10+09:00 Subject: [ruby-list:16988] Re: how to know binary file Tue, Aug 10, 1999 at 12:32:53PM +0900 において WATANABE Hirofumi さん曰く: > :ところで、さっき書いたあと思いついたんですが、 > :kconvなりnkfなりのguessを使って、BINARYが返ってきたら、 > :というのはありですか? > > ありかも. こちらの条件は > if ('\000' < *p && *p < '\006' > || *p == 0x7f > || *p == 0xdf) { > return INT2FIX(_BINARY); > } > なのでちょっと狭いですね. それと 10% とかいうのもないし. > なぜ '\0' が含まれない? 0xdf ってなに? という疑問は残る. 結局curでは、どうせ文字コード判別をしなければならないので nkfのguessを使ってました。 しかし、.tar.gzをattachしたのになぜかplain/textになってしまう ことがある。 まず、次のテストプログラムguess.rbを書きます。 ---- require "nkf" file = ARGV.shift f = open(file, "r") content = f.read f.close guessed_code = NKF::guess(content.to_s) if guessed_code == NKF::BINARY s = 'BINARY' elsif guessed_code == NKF::JIS s = 'JIS' elsif guessed_code == NKF::EUC s = 'EUC' elsif guessed_code == NKF::SJIS s = 'SJIS' else s = 'ASCII(maybe)' end printf "it's %s\n", s ---- んで、 % mkdir tmp2 % cd tmp2 % echo haua > haua % echo tawaba > tawaba % tar cf - * |gzip -c > ../tmp.tar.gz % zcat ../tmp.tar.gz |tar tf - haua tawaba % ruby ../guess.rb ../tmp.tar.gz it's SJIS てなことになってけっこう悲しい。 何か勘違いしてますか? -- 人生を背負い投げ 菊谷 誠(Kikutani Makoto) kikutani@sprintmail.com