我的导轨应用程序中有Level记录,它包含1个可包含带有重音符的字符的字段(名称)。无法在导轨中选择带有口音的列
1.9.3p125 :008 > Level.all
Level Load (0.4ms) SELECT "levels".* FROM "levels"
=> [#<Level id: 1, name: "Débutant">, #<Level id: 2, name: "Intermédiaire">, #<Level id: 3, name: "Avancé">]
但是,当我询问,我有:
1.9.3p125 :011 > Level.where("name = ?", "D\U+FFC3\U+FFA9butant").first
Level Load (0.3ms) SELECT "levels".* FROM "levels" WHERE (name = 'Dbutant') LIMIT 1
=> nil
使用rails c
为é
直接由\U+FFC3\U+FFA9
更换时我不能键入Level.where("name = ?", "Débutant").first
。但在我的控制器中,结果是一样的,我无法查询加重的字符串。
我目前使用sqlite进行测试。
可能是一个编码问题。你是否将应用程序和数据库定义为utf-8? – Nibbler 2012-08-07 06:43:52
我认为数据库应该没问题,因为Level.all返回正确的数据,Level.where只有在重音出现时才能过滤。谢谢,你是对的,我会检查应用程序。 – Luc 2012-08-07 07:31:51
config.encoding在application.rb中正确设置为utf8。我在dabadase.yml中添加了“encoding:utf8”,但仍然是同样的问题。 – Luc 2012-08-07 07:35:26