Вы не можете переопределить методы для встроенных типов и не можете изменить значение по умолчанию для параметра 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"
поведение,Обратите внимание, что это будет глобальное изменение, затрагивающее все импортируемые вами модули.
Я не рекомендую ни один из этих двух способов.Настоящее решение состоит в том, чтобы получить правильное кодирование.(Я хорошо знаю, что это не всегда возможно.)