From: "Yugui (Yuki Sonoda)" Date: 2008-12-13T17:09:13+09:00 Subject: [ruby-dev:37421] Re: [Bug #854] Rake::FileList#egrep が動かない Yuguiです。 okkez _ さんは書きました: > 以下のような Rakefile を作って Ruby1.9.1 preview2 で動かすと動きません。 > > # Rakefile > # coding: utf-8 > desc 'aaa' > task :a do > p FileList['*.rb'].egrep(/require/) > end > > カレントディレクトリに SJIS で書かれたファイルが存在する場合にこけました。 これ、  *.rbをexternal_encoding指定無しで開いてeach_lineして、  各行に対して/require/.match(line) して、  マッチしたらその行を出力、ということをやっていて、 途中でdefault_externalとして壊れている行(cp932文字列リテラル)に出会って それでArgumentError(invalid byte sequence in UTF-8)になってます。 壊れている文字列とのマッチで例外というのはそれなりにreasonableだと思って いたんですが、このケースは確かに何か困りそうです。*.rbならまだしもmagic commentを読めとも言えますが、*.txtの場合だってあるわけです。 これの対応策としてはエンコーディングが不明ならASCII-8BITで開け、というこ とになりますでしょうか。 -- Yugui http://yugui.jp 私は私をDumpする