Python TypeError:必须是字符串,而不是unicode

Python TypeError:必须是字符串,而不是unicode,python,unicode,pickle,Python,Unicode,Pickle,我有以下代码: ... msgdict = {'datafile': datafile, 'mapper': mapper, 'reducer':reducer} msg = cPickle.dumps(msgdict) print msg 我得到的打印消息如下: (dp1 S'mapper' p2 (S's3n://myFolder/mapper.py' p3 tp4 sS'datafile' p5 (S's3n://myFolder/test.txt' p6 tp7 sS'reduc

我有以下代码:

...
msgdict = {'datafile': datafile, 'mapper': mapper, 'reducer':reducer}
msg = cPickle.dumps(msgdict)
print msg   
我得到的打印消息如下:

(dp1
S'mapper'
p2
(S's3n://myFolder/mapper.py'
p3
tp4
sS'datafile'
p5
(S's3n://myFolder/test.txt'
p6
tp7
sS'reducer'
p8
(S's3n://myFolder/reducer.py'
p9
tp10
s.
然后我尝试获取我的内容:

for i in range(count):
    m = q[0].read()
    # this print returns a object Message
    print m 
    # m.get_body()) returns the same of print msg above
    msg = cPickle.loads(m.get_body()) 
但我有一个错误:

msg = cPickle.loads(m.get_body())       
TypeError: must be string, not unicode

有人知道如何解决此错误吗?

尝试用以下内容替换该行:

msg = cPickle.loads(str(m.get_body()))

通过将
str()
强制转换为
m.get_body()
,它可以确保如果字符串是unicode,它会将其转换为字符串。

您是否尝试过
repr()
所有字符串?什么是
m
q
get_body