Python Glossary English

все Python 3codecsфункция

codecs.encode()

кодирование и декодирование

Кодирует объект кодеком по имени. Для текста хватает str.encode; codecs.encode нужен для кодеков «байты → байты» и «текст → текст»: base64, hex, zlib, rot13.

Синтаксис

codecs.encode(obj, encoding='utf-8', errors='strict')

Для обычной строки это то же, что str.encode, — писать codecs.encode('я', 'utf-8') незачем. Своё у функции другое: str.encode принимает только текстовые кодировки и на 'base64' отвечает LookupError «is not a text encoding», а codecs.encode проведёт через любой кодек, в том числе base64 и zlib над bytes. Тип входа задаёт кодек: base64 ждёт bytes, rot13 — str, и перепутанный тип даёт TypeError. Кодировка по умолчанию — 'utf-8', а не кодировка локали.

Примеры

import codecs
print(codecs.encode(b'hi', 'base64'))  # → b'aGk=\n'
print(codecs.encode('Hello', 'rot13'))  # → Uryyb
print(codecs.encode(b'hi', 'hex'))  # → b'6869'
try:
    'hi'.encode('base64')
except LookupError as e:
    print(type(e).__name__)  # → LookupError — str.encode берёт только текстовые кодировки

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности