Python中的UTF-8编码问题,将UTF-8与ascii字符串连接(实际上是插值)



我有以下代码:

u"[%s] - %s" % (a, b.encode('utf-8'))

其中aunicode字符串,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__()魔术方法。

最新更新