所以我想通过Person
搜索我的name
模型。对于这个例子,它可以是“Iñaki”或“Caneça”。如果没有上下案件的顾虑,我怎么能这样做呢?
我尝试过:Person.where("upper(name) = ?", name.upcase)
但如果我输入IÑAKI或CANEÇA,那肯定不起作用。
我知道其他一些答案中提到的代码.force_encoding('ISO-8859-1').encode('UTF-8')
,但我怎么能在这里应用呢?
答案 0 :(得分:1)
这是一个复杂的主题,但基于我非常有限的调查:
upper
。我认为Postgres属于那个类别String
的重写字符,无论是大写还是小写最棘手的似乎是字符之间的大写/小写关系因语言环境而异(例如,相同的小写字符可能会根据语言环境映射到不同的大写字符)。
无论如何,当我看到对UnicodeUtils gem的引用时,我的机器上的以下内容适用于您提供的简单示例:
Person.where("upper(name) = ?", name.mb_chars.upcase)
Rails将mb_chars
方法添加到String
。
答案 1 :(得分:0)
您的config / database.yaml文件中是encoding: utf8
吗?这可以解决问题。