Вы не можете переопределять методы для встроенных типов и не можете изменить значение параметра errors
по умолчанию на str.decode()
. Однако есть и другие способы добиться желаемого поведения.
Способ получше: определите свою собственную функцию decode()
:
def decode(s, encoding="ascii", errors="ignore"):
return s.decode(encoding=encoding, errors=errors)
Теперь вам нужно будет вызвать decode(s)
вместо s.decode()
, но это не так уж и плохо, не так ли?
Хак: вы не можете изменить значение параметра errors
по умолчанию, но вы можете перезаписать то, что делает обработчик для параметра errors="strict"
по умолчанию:
import codecs
def strict_handler(exception):
return u"", exception.end
codecs.register_error("strict", strict_handler)
Это существенно изменит поведение errors="strict"
на стандартное поведение "ignore"
. Обратите внимание, что это будет глобальное изменение, затрагивающее все модули, которые вы импортируете.
Я не рекомендую ни один из этих двух способов. Реальное решение состоит в том, чтобы получить правильные кодировки. (Я прекрасно понимаю, что это не всегда возможно.)
person
Sven Marnach
schedule
02.03.2012