все 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Сообщить о неточности