我在使用 utf8 中的数据库表字符集的 Rails 2.3.16 和 Ruby 1.8.7。
我有一个 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 %>
但这是非常骇人听闻的,并且需要对您将遇到这些编码问题的每个领域进行 hack,我在 Rails 2.3.8 上没有任何类似的问题,所以我真的希望我不必这样做。另外,我希望我不必为了这个问题而升级 Ruby。
我可以确保编码在表单中正确显示的最佳方法是什么?