Чтобы допустить ошибки, вы можете использовать дополнительный второй аргумент метода декодирования байтовой строки. В этом примере болтающийся третий байт ('c') заменяется на "символ замены" U + FFFD:
>>> 'abc'.decode('UTF-16', 'replace')
u'\u6261\ufffd'
Существует также опция игнорирования, которая просто отбрасывает байты, которые не могут быть декодированы:
>>> 'abc'.decode('UTF-16', 'ignore')
u'\u6261'
Хотя обычно требуется система, которая «терпима» к неправильно закодированному тексту, часто довольно сложно точно определить, каково ожидаемое поведение в этих ситуациях. Вы можете обнаружить, что тот, кто предоставил требование «иметь дело с» неправильно закодированным текстом, не полностью понимает концепцию кодировки символов.