str.encode(encoding="utf-8", errors="strict")
encoding
- str
, используемая кодировка строки, по умолчанию utf-8
errors
- обработчик ошибок кодировки.bytes
, байтовая версия строки.Метод str.encode()
вернет закодированную версию строки str
как объект байтов. Другими словами кодирует текстовую строку str
в строку байтов, используя указанную кодировку encoding
.
Аргумент encoding
по умолчанию используется 'utf-8'
. Для получения списка всех схем кодирования смотрите Стандартные кодировки.
Аргумент errors
может быть задан для установки другой схемы обработки ошибок. Значение по умолчанию для ошибок является 'strict'
, это означает, что при ошибке кодирования будет подниматься исключение UnicodeError
.Другие стандартные значения обработчика ошибок, это 'ignore'
, 'replace'
, 'xmlcharrefreplace'
, 'backslashreplace'
или любое другое значение, зарегистрированное с помощью codecs.register_error()
.
Стандартные схемы обработки ошибок:
strict
- возбуждается UnicodeError
, при попадании ошибочных символов*;ignore
- ошибочных символов* пропускаются;replace
- ошибочных символов* заменяются на ?
;xmlcharrefreplace
- ошибочных символов* заменяются на соответствующее им XML-представление;backslashreplace
- ошибочных символов* заменяются на последовательности, начинающиеся с обратной косой черты;namereplace
- ошибочных символов* заменяются на последовательности вида \N{...}
;surrogateescape
- заменяет каждый байт на код суррогата, от U+DC80
до U+DCFF
;surrogatepass
- игнорирует коды суррогатов. Используется со следующими кодеками: utf-8, utf-16, utf-32, utf-16-be, utf-16-le, utf-32-be, utf-32-le;*ошибочные символы
- это символы, которые не поддерживаются указанной encoding
кодировкой.
Изменено в Python-3.1: добавлена поддержка ключевых слов.
>>> x = 'кодирует в строку байтов' # У закодированной строки появился литерал 'b' - стока байтов >>> x.encode('utf-8') # b'\xd0\xba\xd0\xbe\xd0\xb4\xd0\xb8\xd1\x80\xd1\x83\xd0\xb5\xd1\x82 / # \xd0\xb2 \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd1\x83 / # \xd0\xb1\xd0\xb0\xd0\xb9\xd1\x82\xd0\xbe\xd0\xb2' # В кодировке ascii нет русских букв >>> x.encode('ascii') # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # UnicodeEncodeError: 'ascii' codec can't encode characters in # position 0-7: ordinal not in range(128) # В кодировке ascii нет русских букв >>> x.encode('ascii', errors='ignore') # b' ' >>> x.encode('ascii', errors='replace') # b'???????? ? ?????? ??????' >>>