私はRails 2.3.16とRuby 1.8.7を使用しており、データベーステーブルの文字セットはutf8です。
O'Dell の DB 値があり、それを次のようにフォームに表示すると:
<%= form.text_field :last_name %>
<%= form.object.last_name %>
フォーム内のページの出力は次のようになります O'Dell
。O'Dell
コンソールで:
>> order.customer.last_name
=> "O'Dell"
私の環境ではエンコーディングが定義されていませんが、これは Rails 2.3.8 の問題ではないようでした。アップグレードしたばかりで、この問題が発生したようです。
これを回避する簡単な方法はありますか? また、パッチ バージョンが 2.3.8 から 2.3.16 に変更されたことに関連していますか?
考えられる解決策は次のようになる可能性があることを認識しています。
config/initializers/string.rb:
class String
def utf8
return force_encoding('utf-8')
end
end
class NilClass
def utf8
return nil
end
end
_form.html.erb:
<%= f.text_area :field, :value => @obj.field.utf8 %>
しかし、それは非常にハックであり、これらのエンコーディングの問題が発生するすべての分野でそのハックが必要です.Rails 2.3.8ではこのような問題はありませんでしたので、そうする必要がないことを本当に望んでいます. また、この問題のためだけに Ruby をアップグレードする必要がないことを願っています。
エンコーディングがフォームに適切に表示されるようにする最善の方法は何ですか?