email.charset: Представляет наборы символов¶
Исходный код: Lib/email/charset.py
Этот модуль является частью устаревшего (Compat32) почтового API. В новом API используется только таблица псевдонимов.
Оставшийся текст в этом разделе представляет собой оригинальную документацию по модулю.
Этот модуль предоставляет класс Charset для представления наборов символов и преобразований наборов символов в сообщениях электронной почты, а также реестр наборов символов и несколько удобных методов управления этим реестром. Экземпляры Charset используются в нескольких других модулях пакета email.
Импортируйте этот класс из модуля email.charset.
- class email.charset.Charset(input_charset=DEFAULT_CHARSET)¶
Сопоставьте наборы символов с их свойствами электронной почты.
Этот класс предоставляет информацию о требованиях, предъявляемых к электронной почте для определенного набора символов. Он также предоставляет удобные процедуры для преобразования между наборами символов, учитывая доступность соответствующих кодеков. Учитывая набор символов, мы сделаем все возможное, чтобы предоставить информацию о том, как использовать этот набор символов в сообщении электронной почты в соответствии с RFC.
Некоторые наборы символов должны быть закодированы с помощью кавычек-printable или base64, если они используются в заголовках или текстах сообщений электронной почты. Некоторые наборы символов должны быть преобразованы напрямую и не допускаются в электронной почте.
Необязательный параметр input_charset, как описано ниже; он всегда вводится в нижний регистр. После нормализации псевдонима он также используется для поиска в реестре наборов символов, чтобы узнать кодировку заголовка, основную кодировку и кодек преобразования выходных данных, которые будут использоваться для набора символов. Например, если значение input_charset равно
iso-8859-1, то заголовки и текстовые части будут закодированы с использованием функции печати в кавычках, и кодек преобразования выходных данных не потребуется. Если значение input_charset равноeuc-jp, то заголовки будут закодированы с помощью base64, текстовые элементы кодироваться не будут, но выходной текст будет преобразован из набора символовeuc-jpв набор символовiso-2022-jp.Charsetэкземпляры имеют следующие атрибуты данных:- input_charset¶
Указанный исходный набор символов. Обычные псевдонимы преобразуются в их официальные имена электронной почты (например,
latin_1преобразуется вiso-8859-1). По умолчанию используется 7-разрядныйus-ascii.
- header_encoding¶
Если набор символов должен быть закодирован, прежде чем его можно будет использовать в заголовке электронного письма, этому атрибуту будет присвоено значение
Charset.QP(для печати в кавычках),Charset.BASE64( для кодировки base64) илиCharset.SHORTESTдля самая короткая из кодировок QP или BASE64. В противном случае это будетNone.
- body_encoding¶
Аналогично header_encoding, но описывает кодировку тела почтового сообщения, которая на самом деле может отличаться от кодировки заголовка.
Charset.SHORTESTне допускается для body_encoding.
- output_charset¶
Некоторые наборы символов должны быть преобразованы, прежде чем их можно будет использовать в заголовках или текстах сообщений электронной почты. Если одним из них является input_charset, этот атрибут будет содержать название набора символов, в который будут преобразованы выходные данные. В противном случае это будет
None.
- input_codec¶
Название кодека Python, используемого для преобразования input_charset в Unicode. Если кодек для преобразования не требуется, этот атрибут будет
None.
- output_codec¶
Название кодека Python, используемого для преобразования Unicode в output_charset. Если кодек для преобразования не требуется, этот атрибут будет иметь то же значение, что и input_codec.
Charsetэкземпляры также имеют следующие методы:- get_body_encoding()¶
Возвращает кодировку передачи содержимого, используемую для кодирования основного текста.
Это либо строка
quoted-printable, либоbase64в зависимости от используемой кодировки, либо это функция, и в этом случае вы должны вызвать функцию с одним аргументом, в котором кодируется объект сообщения. Затем функция должна установить для самого заголовка Content-Transfer-Encoding любое подходящее значение.Возвращает строку
quoted-printable, если значение body_encoding равноQP, возвращает строкуbase64, если значение body_encoding равноBASE64, и возвращает строку7bitв противном случае.
- get_output_charset()¶
Верните выходной набор символов.
Это атрибут output_charset, если он не равен
None, в противном случае это input_charset.
- header_encode(string)¶
Заголовок - кодирует строку string.
Тип кодировки (base64 или с возможностью печати в кавычках) будет зависеть от атрибута header_encoding.
- header_encode_lines(string, maxlengths)¶
Заголовок - кодирует строку, сначала преобразуя ее в байты.
Это аналогично
header_encode(), за исключением того, что строка соответствует максимальной длине строки, заданной аргументом maxlengths, который должен быть итератором: каждый элемент, возвращаемый этим итератором, будет указывать следующую максимальную длину строки.
- body_encode(string)¶
Тело - закодируйте строку string.
Тип кодировки (base64 или с возможностью печати в кавычках) будет зависеть от атрибута body_encoding.
Класс
Charsetтакже предоставляет ряд методов для поддержки стандартных операций и встроенных функций.- __str__()¶
Возвращает input_charset в виде строки, приведенной к нижнему регистру.
__repr__()является псевдонимом для__str__().
Модуль email.charset также предоставляет следующие функции для добавления новых записей в глобальные реестры наборов символов, псевдонимов и кодеков:
- email.charset.add_charset(charset, header_enc=None, body_enc=None, output_charset=None)¶
Добавьте свойства персонажа в глобальный реестр.
charset - это входной набор символов, который должен быть каноническим именем набора символов.
Необязательные header_enc и body_enc - это либо
Charset.QPдля печати в кавычках,Charset.BASE64для кодировки base64,Charset.SHORTESTдля самой короткой из кодировок для печати в кавычках или base64, либоNoneдля никакой кодировки.SHORTESTдопустимо только для header_enc. По умолчанию используетсяNoneбез кодировки.Необязательный output_charset - это набор символов, в котором должны быть представлены выходные данные. При вызове метода
Charset.convert()будут выполнены преобразования из входной кодировки в Unicode в выходную кодировку. По умолчанию выводится тот же набор символов, что и при вводе.Как input_charset, так и output_charset должны содержать записи кодека Unicode в модуле character-set-to-codecmapping; используйте
add_codec()для добавления кодеков, о которых модуль не знает. Смотрите документацию к модулюcodecsдля получения дополнительной информации.Глобальный реестр кодировок хранится в модуле global dictionary
CHARSETS.
- email.charset.add_alias(alias, canonical)¶
Добавьте псевдоним набора символов. alias - это имя псевдонима, например
latin-1. canonical - это каноническое имя набора символов, напримерiso-8859-1.Глобальный реестр псевдонимов кодировок хранится в модуле global dictionary
ALIASES.