Ruby on rails Mongoid无法查询非拉丁语属性

Ruby on rails Mongoid无法查询非拉丁语属性,ruby-on-rails,ruby,mongoid,Ruby On Rails,Ruby,Mongoid,我的Mongoid文档有两个属性::en_name和ru_name。我创建了一个模型: MyModel.create(en_name: 'sport', ru_name: 'спорт') 然后我问: MyModel.where(en_name: 'sport').first 它把我的模型还给我 当我尝试查询时: MyModel.where(ru_name: 'спорт').first 它返回我nil 如何使Mongoid能够查询非拉丁语的属性?Mongodb使用UTF-8。但是,如果服

我的Mongoid文档有两个属性:
:en_name
ru_name
。我创建了一个模型:

MyModel.create(en_name: 'sport', ru_name: 'спорт')
然后我问:

MyModel.where(en_name: 'sport').first
它把我的模型还给我

当我尝试查询时:

MyModel.where(ru_name: 'спорт').first
它返回我
nil


如何使Mongoid能够查询非拉丁语的属性?

Mongodb使用UTF-8。但是,如果服务器在Windows上运行,您可能会遇到问题,因为Windows使用CP1251。 使用(跨平台图形客户机)可以确保数据以正确的编码写入数据库。 BSON只能用UTF-8编码。如果数据显示不正确,则在将数据上载到mongodb之前,您可能没有将其转换为UTF-8

检查编码
encoding\u name=str.encoding.name


Convert encoding
utf_str=Iconv.conv('windows-1251','utf-8',str)

我通过键入
mongo
命令打开了我的MongoDB控制台。然后我键入了
使用我的项目名称
。然后我写下你的命令,它什么也不做。这个网站给我502错误。当我试着打开它的时候。我稍后打开它,我检查了将在Mongoid中查询的字符串的编码。它说我的编码已经是UTF-8了。我会考虑你的问题还可能是什么引起的。顺便说一下,这里有一个关于使用mongoid实现国际化的好方法。Mongoid支持I18n,国际化需要最少的代码编写。希望这篇文章会有用。