email.charset: Представление наборов символов
Исходный код: Lib/email/charset.py
Этот модуль является частью устаревшего (Compat32) API для работы с электронной почтой. В новом API используется только таблица псевдонимов.
Остальной текст в этом разделе — это оригинальная документация модуля.
Этот модуль предоставляет класс Charset для представления наборов символов и преобразований наборов символов в сообщениях электронной почты, а также реестр наборов символов и несколько удобных методов для управления этим реестром. Экземпляры класса Charset используются в нескольких других модулях в пакете email.
Импортируйте этот класс из модуля email.charset.
-
class email.charset.Charset(input_charset=DEFAULT_CHARSET) -
Сопоставление наборов символов с их свойствами в электронных письмах.
Этот класс предоставляет информацию о требованиях, предъявляемых к электронным письмам для определенного набора символов. Он также предоставляет удобные функции для преобразования между наборами символов при наличии соответствующих кодеков. Для заданного набора символов он сделает все возможное, чтобы предоставить информацию о том, как использовать этот набор символов в сообщении электронной почты в соответствии с RFC.
Некоторые наборы символов должны быть закодированы с использованием кодировки quoted-printable или base64, если они используются в заголовках или телах электронных писем. Некоторые наборы символов должны быть преобразованы, и их использование в электронных письмах не допускается.
Необязательный параметр input_charset описан ниже; он всегда приводится к нижнему регистру. После нормализации псевдонима он также используется в качестве ключа для поиска в реестре наборов символов, чтобы определить кодировку заголовка, кодировку тела и кодек преобразования вывода, которые должны быть использованы для набора символов. Например, если input_charset равен
iso-8859-1, то заголовки и тела будут закодированы с использованием quoted-printable, и никакой кодек преобразования вывода не нужен. Если 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(для quoted-printable),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в зависимости от используемой кодировки, или это функция, в этом случае вы должны вызвать функцию с одним аргументом — объектом Message, который кодируется. Функция должна затем установить заголовок 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 или quoted-printable) будет основан на атрибуте header_encoding.
-
header_encode_lines(string, maxlengths) -
Заголовок-кодировка строки string, предварительно преобразуя её в байты.
Это аналогично
header_encode(), за исключением того, что строка вписывается в максимальную длину строки, заданную аргументом maxlengths, который должен быть итератором: каждый элемент, возвращаемый этим итератором, предоставит следующую максимальную длину строки.
-
body_encode(string) -
Тело-кодировка строки string.
Тип кодировки (base64 или quoted-printable) будет основан на атрибуте body_encoding.
Класс
Charsetтакже предоставляет ряд методов для поддержки стандартных операций и встроенных функций.-
__str__() -
Возвращает input_charset как строку, приведенную к нижнему регистру.
__repr__()— это псевдоним для__str__().
-
__eq__(other) -
Этот метод позволяет сравнивать два экземпляра класса
Charsetна равенство.
-
__ne__(other) -
Этот метод позволяет сравнивать два экземпляра класса
Charsetна неравенство.
-
Модуль email.charset также предоставляет следующие функции для добавления новых записей в глобальные реестры наборов символов, псевдонимов и кодеков:
-
email.charset.add_charset(charset, header_enc=None, body_enc=None, output_charset=None) -
Добавление свойств набора символов в глобальный реестр.
charset — это входной набор символов и должен быть каноническим именем набора символов.
Необязательные header_enc и body_enc — это либо
charset.QPдля quoted-printable,charset.BASE64для кодировки base64,charset.SHORTESTдля кратчайшей из кодировок quoted-printable или base64, илиNoneдля отсутствия кодировки.SHORTESTдопустимо только для header_enc. По умолчанию —None(отсутствие кодировки).Необязательный output_charset — это набор символов, в котором должен быть вывод. Преобразования будут происходить от входного набора символов к Unicode, а затем к выходному набору символов при вызове метода
Charset.convert(). По умолчанию вывод будет в том же наборе символов, что и вход.И input_charset, и output_charset должны иметь записи кодека Unicode в отображении набора символов модуля к кодеку; используйте
add_codec()для добавления кодеков, о которых модуль не знает. См. документацию модуляcodecsдля получения дополнительной информации.Глобальный реестр наборов символов хранится в глобальном словаре модуля
CHARSETS.
-
email.charset.add_alias(alias, canonical) -
Добавление псевдонима набора символов. alias — это имя псевдонима, например
latin-1. canonical — каноническое имя набора символов, напримерiso-8859-1.Глобальный реестр псевдонимов наборов символов хранится в глобальном словаре модуля
ALIASES.
-
email.charset.add_codec(charset, codecname) -
Добавление кодека, который сопоставляет символы заданного набора символов с Unicode и обратно.
charset — это каноническое имя набора символов. codecname — это имя Python кодека, соответствующее второму аргументу метода
str’sencode().
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/email.charset.html