【发布时间】:2015-11-30 13:54:01
【问题描述】:
import httplib
webservice = httplib.HTTPSConnection(host)
# ....
try:
webservice.endheaders()
except Exception, exc:
handle_failure(request, exc_str=unicode(exc))
异常包含:
错误(110,'Die Wartezeit f\xc3\xbcr die Verbindung ist abgelaufen')
不要问我为什么这条消息是德语的。
uncode(exc) 失败如下:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 27:
ordinal not in range(128)
在 Python 2.7 中将异常转换为字符串的故障安全方法是什么?
在这种情况下故障安全的定义:我不能得到 UnicodeError。期望进入日志。非ascii字符丢失也没关系。
【问题讨论】:
-
您有什么理由必须使用
unicode而不能只使用exc_str=str(exc)? -
尝试使用
str(exc)简单地将异常类型转换为str -
如果你想要一个 unicode 字符串,你会
.decode,看起来你已经有了一个 utf-8 编码的字符串,所以不知道为什么要更改它。使用unicode(s)将尝试使用ascii 编码,您将使用unicode(s,"utf-8"),如前所述解码或直接使用字符串
标签: python python-2.7 exception python-unicode