2013-05-14 3 views
0

Мой mongodb использует utf-8, а данные чтения django из него не являются unicode, возможно, это ответ, но как решить эту проблему?mongoengine django и encoding, 'utf8' codec не может декодировать байт

данные в mongodb имеют некоторые китайские. Если я использую другую таблицу полностью из букв или цифр, она будет работать хорошо.

 
class Source(Document) : 
    id    = IntField() 
    url    = StringField() 
    fetchTime  = StringField() 
    domain   = StringField() 
    xml_tpl_old  = StringField() 
    xml_tpl_new  = StringField() 
    source   = BinaryField() 
    xmlResult  = StringField() 
    xmlResult1  = StringField() 

, если я использую таблицу источника (то есть некоторые китайские данные)

Source.objects.all() 

Джанго даст сообщения


Traceback (most recent call last): 
    File "E:/Django_project/mysite/mysite/test.py", line 49, in 
    unicode(Source.objects) 
    File "D:\Python27\lib\site-packages\mongoengine-0.8.0rc4-py2.7.egg\mongoengine\queryset\queryset.py", line 216, in __repr__ 
    self._populate_cache() 
    File "D:\Python27\lib\site-packages\mongoengine-0.8.0rc4-py2.7.egg\mongoengine\queryset\queryset.py", line 167, in _populate_cache 
    self._result_cache.append(self.next()) 
    File "D:\Python27\lib\site-packages\mongoengine-0.8.0rc4-py2.7.egg\mongoengine\queryset\queryset.py", line 1148, in next 
    raw_doc = self._cursor.next() 
    File "D:\Python27\lib\site-packages\pymongo-2.5-py2.7-win32.egg\pymongo\cursor.py", line 814, in next 
    File "D:\Python27\lib\site-packages\pymongo-2.5-py2.7-win32.egg\pymongo\cursor.py", line 763, in _refresh 
    File "D:\Python27\lib\site-packages\pymongo-2.5-py2.7-win32.egg\pymongo\cursor.py", line 720, in __send_message 
    File "D:\Python27\lib\site-packages\pymongo-2.5-py2.7-win32.egg\pymongo\helpers.py", line 106, in _unpack_response 
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa1 in position 74: invalid start byte 

Спасибо!

+0

0xa1 является (U + 00A1 ИНВЕРТОЙ ИСКЛЮЧИТЕЛЬНОЙ МАРКИ) на латыни-1. – Cairnarvon

ответ

-1

попробовать это в вашем питона консоли

>>>import sys 
>>>sys.getdefaultencoding() 

, если результат «ASCII», вы должны изменить кодировку по умолчанию.

+0

мои данные в mongodb не utf-8 !!! sign ... –

-2

Я использую кодировку base64 перед сохранением данных в БД.

Смежные вопросы