我是Python的新手,我遇到了打印异常内容的一些问题:
# -*- coding: ISO-8859-1 -*-
except Exception as err:
print(err)
产生“UnicodeEncodeError:'ascii'编解码器无法编码位置52中的字符u'\ uf260':序数不在范围内(128)”
我试过阅读https://docs.python.org/2.7/howto/unicode.html#the-unicode-type,但我遇到的问题是为了解码和编码或使用unicode(..,errors ='ignore')我需要一个字符串和str(错误)失败并显示以上错误消息。
这是在Windows环境中。感谢任何回复,即使它是“学会搜索!”因为在那种情况下确实有一个类似的问题,我在搜索期间错过了希望得到回答:)
编辑。我试过了
print("Error {0}".format(str(err.args[0])).encode('utf-8', errors='ignore'))
产生完全相同的错误消息。
答案 0 :(得分:0)
UnicodeEncodeError:' ascii'编解码器不能对字符u' \ uf260'进行编码。在 第52位:序数不在范围内(128)
查看错误,字符\uf260
不是ascii,但有些东西试图将非ascii字符视为ascii。什么?
请改为:print err.__repr__()
。
<强>解释强>
err
是一个Exception对象,它实现了__str__()
函数,因此在打印时会调用一个对象object.__str__()
,这实际上会带来这个错误。您可以通过致电print err.__str__()
来验证是否有类似错误。
另外,要检查Exception类模块是否为__str__()
,您可以执行dir(Exception)
。
更新: Check this link to understand how print picks up encoding.
<强>参考文献:强>
Python __str__ versus __unicode__
How to print a class or objects of class using print()?
Python: Converting from ISO-8859-1/latin1 to UTF-8
Why does Python print unicode characters when the default encoding is ASCII?