From: Nobuyoshi Nakada Date: 2010-05-30T01:11:37+09:00 Subject: [ruby-dev:41461] Re: [Bug #3360](Closed) rdoc fails when including BOM なかだです。 At Sun, 30 May 2010 00:36:49 +0900, whiteleaf wrote in [ruby-dev:41460]: > --charset オプションは「html の charset を指定する」という解釈ですと、 > encode しないほうが正しい挙動といえなくもないですが、やっぱり > 2つ以上の異なるエンコーディングのファイルを対象にする場合は > charset と中身のエンコーディングは揃えてほしいところです。 そのへんが確信がなかったこともあり、別のissueと考えてそのままに しました。 > それと遠藤さんのパッチですと、 > ASCII-8BIT のデータを encode してしまう可能性がある(Encoding::UndefinedConversionError) > ので、force_encoding をした場合のみ encode するべきです。 > (私のパッチではそう処理していたはずです) BOMもmagic commentもない場合は、US-ASCIIとして処理すべきでしょう。 diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb index 3c08b5e..d605a26 100644 --- a/lib/rdoc/rdoc.rb +++ b/lib/rdoc/rdoc.rb @@ -411,9 +411,8 @@ The internal error was: if /coding[=:]\s*([^\s;]+)/i =~ content[%r"\A(?:#!.*\n)?.*\n"] enc = ::Encoding.find($1) end - if enc ||= (Encoding::UTF_8 if utf8) - content.force_encoding(enc) - end + enc ||= (utf8 ? Encoding::UTF_8 : Encoding::US_ASCII) + content.encode!(@options.charset, enc) end content -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦