Сообщить об ошибке.

Метод str.encode() в Python, преобразует строку в байты

Преобразует текстовую строку в байтовую строку

Синтаксис:

str.encode(encoding="utf-8", errors="strict")

Параметры:

Возвращаемое значение:

  • 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'???????? ? ?????? ??????'
>>>