我正打算在MongoDB字段中存储非英语(如孟加拉语,印地语)数据。

This is my approach:-

import pymongo
from pymongo import MongoClient
client = MongoClient()
db = client.testdb

db['testing'].save({'data':'শুভ নববর্ষ'})

我有一个异常(exception)。
异常值:第5行/test/views.py文件中的非ASCII字符'\ xe0',但未声明编码;有关详细信息,请参见http://www.python.org/peps/pep-0263.html(views.py,第5行)

在那之后,我尝试过这样:-
from bson import BSON
bson_string = BSON.encode({'data':'শুভ নববর্ষ'})
db['testing'].save({'data':'শুভ নববর্ষ'})

这次我也遇到了同样的错误。

编辑:-
基本上我无法在print 'শুভ নববর্ষ'中使用IDLE
>>>print 'শুভ নববর্ষ'
Unsupported characters in input
1ST EDIT:-

我在自己的views.py中添加了# -*- coding: utf-8 -*-,然后能够以某种方式存储数据。
但是此对象结构与mongodb中的常规数据结构不同。
喜欢:-
> db['testing'].find()
{ষ" } : ObjectId("52d65a50012bad0b23c13a65"), "data" : "শà§à¦­ নববরà


I have added another record.
>db['testing'].save({'data':'kousik chowdhury'})

Now the collection is looking funny.
> db['testing'].find()                                                           ষ" }
{ "_id" : ObjectId("52d65e6a012bad0a39a2685b"), "data" : "kousik chowdhury" }¦°à§

> db['testing'].find().length()
2

数据检索
** I am using PuTTY as a editor.

>>> a = db['testing'].find()[0]
>>> a
{u'_id': ObjectId('52d65a50012bad0b23c13a65'), u'data': u'\u09b6\u09c1\u09ad\u09a8\u09ac\u09ac\u09b0\u09cd\u09b7'}
>>> mydata = a['data']
>>>mydata
u'\u09b6\u09c1\u09ad \u09a8\u09ac\u09ac\u09b0\u09cd\u09b7'
>>>mydata.encode('utf-8')
'\xe0\xa6\xb6\xe0\xa7\x81\xe0\xa6\xad \xe0\xa6\xa8\xe0\xa6\xac\xe0\xa6\xac\xe0\xa6\xb0\xe0\xa7\x8d\xe0\xa6\xb7'

是否有任何标准流程,以便我可以将其以正确的格式存储在mongodb中并取回数据?

最佳答案

你有线吗:

# -*- coding: <encoding name> -*-

在文件的开头?
例如:
# -*- coding: utf-8 -*-

第2部分:
  • 使用unicode前缀(u'')保存数据
  • 假设您想执行一个['data']。encode('utf-8')即可正常工作-只是

    打印一个['data']。encode('utf-8')

  • 提示:永远没有充分的理由使用一些值来覆盖基本类型...(我的意思是str ='')

    08-18 10:13
    查看更多