0
我有一些需要插入的字节串。将字节字符串插入到MongoDB中
> db.test2.t.insert({'e': '\xa0\xc7e\xea\x14\xbeg\xb7\xdf\xcagFN\xf8\x13\xbe'})
> db.test2.t.insert({'e': '\xa0\xc7e\xea\x14\xbeg\xb7\xdf\xcagFN\xf8\x13\xbe'})
> db.test2.t.find()
{ "_id" : ObjectId("5152e927d50568b4a9b56cdd"), "e" : " Çeê\u0014¾g·ßÊgFNø\u0013¾" }
{ "_id" : ObjectId("5152e9e9d50568b4a9b56cde"), "e" : " Çeê\u0014¾g·ßÊgFNø\u0013¾" }
我不能读取相同的字节串出在Python:
>>> e = " Çeê\u0014¾g·ßÊgFNø\u0013¾"
>>> e
'\xc2\xa0\xc3\x87e\xc3\xaa\\u0014\xc2\xbeg\xc2\xb7\xc3\x9f\xc3\x8agFN\xc3\xb8\\u0013\xc2\xbe'
>>> g = b'\xa0\xc7e\xea\x14\xbeg\xb7\xdf\xcagFN\xf8\x13\xbe'
>>> g
'\xa0\xc7e\xea\x14\xbeg\xb7\xdf\xcagFN\xf8\x13\xbe'
感谢。
编码为UTF8
>>> u'\xa0\xc7e\xea\x14\xbeg\xb7\xdf\xcagFN\xf8\x13\xbe'.encode('utf8')
'\xc2\xa0\xc3\x87e\xc3\xaa\x14\xc2\xbeg\xc2\xb7\xc3\x9f\xc3\x8agFN\xc3\xb8\x13\xc2\xbe'
当我插入,我得到
{ "_id" : ObjectId("5152ee3ad50568b4a9b56ce0"), "e" : " Ãeê\u0014¾g·ÃÃgFNø\u0013¾" }
但显然,当我解码与utf8
,
u'\xc2\xa0\xc3\x87e\xc3\xaa\\u0014\xc2\xbeg\xc2\xb7\xc3\x9f\xc3\x8agFN\xc3\xb8\\u0013\xc2\xbe'
这是我放了什么很好。但是,我如何解码回原始的?
它可能是一个编码的问题?也许MongoDB使用不同于Python的字符编码。 – Philipp 2013-03-27 12:57:40
MongoDB使用UTF-8编码将字节数组存储为二进制数据。尝试编码你的字符串为UTF-8 – 2013-03-27 13:00:04
谢谢。 @orid我不认为我可以将它编码为utf8,因为UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xa0:序号不在范围(128)中。通过做''byte_string.encode('utf-8')'' – User007 2013-03-27 13:02:15