2

我有这样一段代码做一个咨询:波浪号或口音on Rails的3

text = 'pestañas' 
text.split(' ').each do |word| 
    @dictionary = Dictionary.where('spanish_word LIKE ?', "%#{word}%").first 
end 

但是,如果我在调试程序看,我有这样的咨询:

Dictionary Load (0.3ms) SELECT `dictionaries`.* FROM `dictionaries` WHERE (spanish_word LIKE '%pestaas%') LIMIT 1 

我有这个问题与ñ,á,é,í,ó,或拉丁字符。我的MySQL DB编码是UTF-8 Unicode(utf8),Ruby 1.9.2p0

+0

代码可以在控制台中找到它吗?我有一个应用程序,它是UTF8并具有自动完成功能。我粘贴了单词,检查了输出,并且在查询中包括了颚化符。让我们看看控制台是否有助于缩小问题出现的位置 – cgr

+0

是的,我在控制台中进行了测试,但结果相同 - > Dictionary Load(0.3ms)SELECT'dictionaries'。* FROM'dictionaries' WHERE(spanish_word LIKE' %pestaas%')LIMIT 1该方法是在助手中声明的,这会导致问题吗? – utiq

+0

我刚刚在rails/mysql应用程序ruby1.9.2p290中试过这个: '>> Dictionary.where(“title like?”,“%pestañas%”)' 'Dictionary Load(0.2ms)SELECT dictionaries。 *从字典哪里(标题如'%pestañas%')' 像预期的那样工作。你确定,你的数据库AND表和列是utf_general还是utf_general_ci? 你有没有在你的application.rb'config.encoding =“utf-8”' 还有一些选项ActiveRecord的内部/外部编码... – stwienert

回答

0

您正在使用哪种MySQL gem?你应该使用ruby-mysql或者mysql2 gem。

有关更多信息,请参阅Reads for Rubyists

+0

我正在使用mysql2 0.2.7 gem – utiq