incompatible character encodings: UTF-8 and ASCII-8BIT

Ruby 1.9.2 + Rails 3.0.3 の環境で表題のエラーが発生。データベースからマルチバイト文字列を取得する事は出来るのですが、多言語対応のための config/locales/ja.yml やビューの日本語が読み取れない様子。エラーの原因をトレースしていくと、以下のファイルに突き当たりました。

/path/to/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.3/lib/active_support/core_ext/string/output_safety.rb

上のパスは bundle install --path vendor/bundle を指定してアプリケーション内に gem をインストールした場合の位置なので、環境に合わせて場所を調べてみて下さい。エラーが出ていた concat メソッドを書き換えます。

def concat(value)
  if value.html_safe?
    super(value.force_encoding('utf-8'))
  else
    super(ERB::Util.h(value).force_encoding('utf-8'))
  end
end

見ての通り force_encoding で強制的に UTF-8 を指定しただけですが、一応の動作を確認。テストで作っている他のアプリケーションでは問題発生しなかったので、何らかの条件で再現するようです。はてさて。