おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

Ruby1.9.2とRails3.0.3でincompatible character encodings: UTF-8 and ASCII-8BIT エラー

Ruby1.9.2 + Rails3.0.3 で開発中にview内で incompatible character encodings: UTF-8 and ASCII-8BIT という例外が発生しました。
しらべてみると、String#concatで例外が出ているようです。concatの引数で渡したStringがASCIIと判断されてしまっていて、違う文字コード同士を連結しようとするために発生する例外でした。

とりあえず乱暴ですが以下のようにして対応しました。
config/initializers/string.rb

class String  
  def concat_with_ruby192(str)  
    concat_without_ruby192(str.force_encoding('utf-8'))  
  end  
  alias_method_chain :concat, :ruby192  
end