все Python 3Байтовые последовательностифункция
bytes.decode
bytes — кодирование
Декодирует байты в строку (str) по заданной кодировке (по умолчанию UTF-8).
Синтаксис
b.decode(...)
По умолчанию errors='strict', и любой байт, не укладывающийся в кодировку, даёт UnicodeDecodeError; режимы 'replace' и 'ignore' гасят исключение ценой порчи текста. Кодировка latin-1 не падает никогда, потому что покрывает все 256 значений байта, — так что кодировка, при которой ошибка «наконец исчезла», чаще всего просто выдаёт мусор. Если байты приходят кусками из сети или файла, разрез посреди многобайтового символа тоже уронит decode — для потока нужен инкрементальный декодер.
Примеры
print(b'hi'.decode()) # → hi
print(b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'.decode('utf-8')) # → привет
print(b'caf\xe9'.decode('latin-1')) # → café
print(b'\xff'.decode('utf-8')) # → UnicodeDecodeError
print(b'a\xffb'.decode('utf-8', errors='ignore')) # → ab
print('hi'.encode()) # → b'hi'
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности