#python-2.7 #unicode #utf-8
#python-2.7 #юникод #utf-8
Вопрос:
Довольно часто я нахожу свои объекты для самостоятельного ведения журнала, такие как:
result = call_a_func(XXX)
logger.info(u"I caught an exception {}".format(result))
Проблема в том, что если результатом является объект со строкой с символами Юникода (все еще байтовой строкой) и не имеет __unicode__
метода, это приведет к сбою.
пример:
try:
# Exception with a unicode encoded in a string with utf-8
raise Exception("xeaxb5xad") # Note this is not usually created under my control
except Exception as e:
return u"I captured: {}".format(e)
Каков наилучший способ регистрации объектов, поступающих из внешней библиотеки, где вы не уверены, что сможете преобразовать ее в юникод?
Есть ли что-нибудь лучше, чем передавать его через функцию, например:
def as_unicode(in_obj):
try:
return unicode(in_obj)
except UnicodeDecodeError:
return str(in_obj).decode("utf-8")
Комментарии:
1. Не совсем. Если код не
unicode
готов, то с этим ничего нельзя поделать.