Что делает bytes.decode () с ошибками = 'replace'? - PullRequest
0 голосов
/ 26 июня 2019

В документации на https://docs.python.org/3/library/stdtypes.html#bytes.decode

В нем говорится, что errors='replace' является допустимым параметром .... Но чем он заменяет недопустимые значения WITH?

1 Ответ

0 голосов
/ 26 июня 2019

Следуйте документации к Обработчикам ошибок , и это объяснит, что «замена» применима к кодировкам текста.

Значение: 'replace'
Значение: Заменить наподходящий маркер замены;Python будет использовать официальный U+FFFD REPLACEMENT CHARACTER для встроенных кодеков при декодировании, и '?'при кодированииСмысл: Заменить на подходящую замену

U + FFFD действует как заполнитель для байтов, которые не могут быть декодированы.Это выглядит так:

b'ab\xffcd'.decode('utf-8', 'replace')
# 'ab�cd'

Без аргумента «заменить» вы можете получить UnicodeDecodeError:

b'ab\xffcd'.decode('utf-8')
# UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 2: invalid start byte
...