我有以下代码:
u"[%s] - %s" % (a, b.encode('utf-8'))
其中a
是unicode
字符串,b是经典的str
现在这给出了经典的错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'xf6' in position 2: ordinal not in range(128)
(位置2属于a)
为什么不起作用?我想,如果我把字符串b
做成unicode字符串,那么当把字符串连接在一起时,它不应该转换成ascii吗?
这个问题已经解决了,基本上我是个白痴,不知道重载__str__()
方法和__Unicode__()
方法之间的区别。当所有内容在从方法返回之前都转换为str时,出现了整个错误。
把这个答案留在这里,以防有人遇到类似的问题,并且不知道类的__unicode__()
魔术方法。