2012-01-15 13 views
1

のUbuntu 10.04.3 LTS のMongoDB-1.2.2-1ubuntu1.1 ジャンゴ1.3 mongoengine-0.5.2 pymongo-2.1.2なぜutf8はMongodb + mongoengine + djangoで動作していないのですか?

モデル:

class User(Document): 
    email = StringField(required=True) 
    first_name = StringField(max_length=50) 
    last_name = StringField(max_length=50) 


class Comment(EmbeddedDocument): 
    content = StringField() 
    name = StringField(max_length=120) 

class Post(Document): 
    title = StringField(max_length=120, required=True) 
    author = ReferenceField(User) 
    tags = ListField(StringField(max_length=30)) 
    comments = ListField(EmbeddedDocumentField(Comment)) 

class TextPost(Post): 
    content = StringField() 

class ImagePost(Post): 
    image_path = StringField() 

class LinkPost(Post): 
    link_url = StringField() 

ポストを保存しようとしていますタイトルはcaracter "e" を持っている:

john = User(email='[email protected]', first_name='John', last_name='Doe') 
    john.save() 


post1 = TextPost(title='Fun with MongoEnginée', author=john) 
post1.content = 'Took a look at MongoEngine today, looks pretty cool.' 
post1.tags = ['mongodb', 'mongoengine'] 
post1.save() 

次の例外がスローされます。

Traceback (most recent call last): 
    File "/home/raton/aptana_work/test/mongo/test1/cobertura/tests.py", line 27, in create_relato 
    post1.save() 
    File "/home/raton/aptana_work/test/mongo/env/lib/python2.7/site-packages/mongoengine-0.5.2-py2.7.egg/mongoengine/document.py", line 149, in save 
    doc = self.to_mongo() 
    File "/home/raton/aptana_work/test/mongo/env/lib/python2.7/site-packages/mongoengine-0.5.2-py2.7.egg/mongoengine/base.py", line 648, in to_mongo 
    data[field.db_field] = field.to_mongo(value) 
    File "/home/raton/aptana_work/test/mongo/env/lib/python2.7/site-packages/mongoengine-0.5.2-py2.7.egg/mongoengine/base.py", line 127, in to_mongo 
    return self.to_python(value) 
    File "/home/raton/aptana_work/test/mongo/env/lib/python2.7/site-packages/mongoengine-0.5.2-py2.7.egg/mongoengine/fields.py", line 40, in to_python 
    return unicode(value) 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128) 

答えて

5

を参照してください:あなたは、一番上にこの魔法のコメントを配置する必要がありますMongoEnginée '

+0

それは働いた。私はその重要な細部を忘れてしまった。ありがとう。 –

+0

心配しないでください - そのpythonのgotcha!回答にマークを付けると、この問題に遭遇した他の人に役立ちます。 – Ross

2

ソースファイルはUTF-8でエンコードされていると宣言されていますか? Unicodeとして

post1 = TextPost(title=u'Fun with MongoEnginée', author=john) 
post1.content = 'Took a look at MongoEngine today, looks pretty cool.' 
post1.tags = ['mongodb', 'mongoengine'] 
post1.save() 

重要な部分が宣言され、あなたの文字列:とU「楽しい

#!/usr/bin/env python 
# -*- coding: utf8 -*- 

はこれを試してみてくださいhttp://www.python.org/dev/peps/pep-0263/

関連する問題