все Python 3codecsфункция
codecs.getencoder()
реестр кодеков
Возвращает функцию-кодировщик кодека без состояния: она принимает строку и отдаёт пару (байты, сколько символов обработано). То же, что lookup(name).encode.
Синтаксис
encode = codecs.getencoder(encoding)
Главная ловушка — результат кортеж, а не bytes: f('я') вернёт (b'\xd1\x8f', 1), и запись его в файл как есть даст TypeError. Кодировщик не помнит состояния, поэтому для UTF-16 каждый вызов заново пишет BOM — для кусков нужен getincrementalencoder. Если просто нужны байты, str.encode короче и понятнее.
Примеры
import codecs
enc = codecs.getencoder('utf-8')
data, used = enc('яблоко')
print(data[:2], used) # → b'\xd1\x8f' 6
enc16 = codecs.getencoder('utf-16')
print(enc16('a')[0], enc16('b')[0]) # → ? b'\xff\xfea\x00' b'\xff\xfeb\x00' — BOM в каждом вызове, порядок байтов зависит от машины
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности