使用unicode字符串格式化对象而不使用unicode方法

时间:2016-10-06 13:31:52

标签: python-2.7 unicode utf-8

我常常找到自我记录对象,如:

result = call_a_func(XXX)
logger.info(u"I caught an exception {}".format(result))

问题是如果result是一个带有unicode字符的字符串的对象(仍然是一个bytestring)并且没有__unicode__方法,那么这将会爆炸。

示例:

try:
    # Exception with a unicode encoded in a string with utf-8
    raise Exception("\xea\xb5\xad")  # Note this is not usually created under my control
except Exception as e:
    return u"I captured: {}".format(e)

记录来自外部库的对象的最佳方法是什么,您不确定它是否可以将其转换为unicode?

还有什么比通过以下函数传递它更好:

def as_unicode(in_obj):
    try:
        return unicode(in_obj)
    except UnicodeDecodeError:
        return str(in_obj).decode("utf-8")

0 个答案:

没有答案