我在这一行得到编码错误:
s = "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message)
UnicodeEncodeError:'ascii'编解码器无法编码位置44中的字符u'\ xc4':序数不在范围内(128)
我尝试通过将所有参数组合传递给字符串格式来重现此错误,但最接近的是“ascii decode”错误(通过同时传递unicode和高ascii字符串,强制将字符串转换为unicode,使用ascii解码器
但是,我没有设法得到“ascii encode”错误。有人有想法吗?
答案 0 :(得分:8)
当Python试图强制参数时会发生这种情况:
s = u"\u00fc"
print str(s)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 0: ordinal not in range(128)
这是因为你的一个参数是一个对象(不是任何类型的字符串),而Python上调用str()
。有两种解决方案:对格式(s = u"%s..."
)使用unicode字符串,或用repr()
包装每个参数。
答案 1 :(得分:1)
您传递的其中一个操作数不适合ASCII编码 - 可能包含Unicode或Latin-1字符。将格式字符串更改为Unicode,看看会发生什么。