1

我在使用 utf8 中的数据库表字符集的 Rails 2.3.16 和 Ruby 1.8.7。

我有一个 O'Dell 的 DB 值,当我以如下形式显示它时:

<%= form.text_field :last_name %>
<%= form.object.last_name %>

表单中页面上的输出变为: O&#x27;DellO'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。

我可以确保编码在表单中正确显示的最佳方法是什么?

4

0 回答 0