email.charset
: Representerar teckenuppsättningar¶
Källkod: Lib/email/charset.py
Denna modul är en del av det äldre (Compat32
) e-post-API:et. I det nya API:et används endast aliastabellen.
Resterande text i detta avsnitt är modulens originaldokumentation.
Denna modul innehåller en klass Charset
för att representera teckenuppsättningar och teckenuppsättningskonverteringar i e-postmeddelanden, samt ett teckenuppsättningsregister och flera bekvämlighetsmetoder för att manipulera detta register. Instanser av Charset
används i flera andra moduler inom email
-paketet.
Importera den här klassen från modulen email.charset
.
- class email.charset.Charset(input_charset=DEFAULT_CHARSET)¶
Mappa teckenuppsättningar till deras e-postegenskaper.
Denna klass ger information om de krav som ställs på e-post för en viss teckenuppsättning. Den innehåller också praktiska rutiner för konvertering mellan olika teckenuppsättningar, förutsatt att tillämpliga codecs finns tillgängliga. Givet en teckenuppsättning kommer den att göra sitt bästa för att tillhandahålla information om hur man använder den teckenuppsättningen i ett e-postmeddelande på ett RFC-kompatibelt sätt.
Vissa teckenuppsättningar måste kodas med quoted-printable eller base64 när de används i e-postens rubriker eller brödtexter. Vissa teckenuppsättningar måste konverteras direkt och är inte tillåtna i e-post.
Den valfria input_charset är som beskrivs nedan; den är alltid tvingad till gemener. Efter att ha aliasnormaliserats används det också som en uppslagning i registret över teckenuppsättningar för att ta reda på kodningen av rubriker, kodningen av textmassan och den codec för utdatakonvertering som ska användas för teckenuppsättningen. Om input_charset t.ex. är
iso-8859-1
kodas rubriker och brödtexter med quoted-printable och ingen codec för utdatakonvertering behövs. Om input_charset äreuc-jp
kommer rubrikerna att kodas med base64, kropparna kommer inte att kodas, men utdatatexten kommer att konverteras från teckenuppsättningeneuc-jp
till teckenuppsättningeniso-2022-jp
.Charset
-instanser har följande dataattribut:- input_charset¶
Den ursprungliga teckenuppsättningen som anges. Vanliga alias konverteras till deras officiella e-postnamn (t.ex. konverteras
latin_1
tilliso-8859-1
). Standard är 7-bitarsus-ascii
.
- header_encoding¶
Om teckenuppsättningen måste kodas innan den kan användas i ett e-posthuvud, kommer detta attribut att sättas till
charset.QP
(för quoted-printable),charset.BASE64
(för base64-kodning), ellercharset.SHORTEST
för den kortaste av QP- eller BASE64-kodning. Annars kommer det att varaNone
.
- body_encoding¶
Samma som header_encoding, men beskriver kodningen för e-postmeddelandets kropp, som faktiskt kan vara annorlunda än rubrikens kodning.
charset.SHORTEST
är inte tillåtet för body_encoding.
- output_charset¶
Vissa teckenuppsättningar måste konverteras innan de kan användas i e-postmeddelandenas rubriker eller brödtexter. Om input_charset är en av dem, kommer detta attribut att innehålla namnet på den teckenuppsättning som utdata ska konverteras till. Annars kommer det att vara
None
.
- input_codec¶
Namnet på den Python-codec som används för att konvertera input_charset till Unicode. Om ingen konverteringscodec är nödvändig, kommer detta attribut att vara
None
.
- output_codec¶
Namnet på den Python-codec som används för att konvertera Unicode till output_charset. Om ingen konverteringscodec är nödvändig kommer detta attribut att ha samma värde som input_codec.
Charset
-instanser har också följande metoder:- get_body_encoding()¶
Returnerar den kodning för innehållsöverföring som används för kodning av body.
Detta är antingen strängen
quoted-printable
ellerbase64
beroende på vilken kodning som används, eller så är det en funktion, i vilket fall du bör anropa funktionen med ett enda argument, meddelandeobjektet som skall kodas. Funktionen bör sedan ställa in Content-Transfer-Encoding-rubriken själv till vad som är lämpligt.Returnerar strängen
quoted-printable
om body_encoding ärQP
, returnerar strängenbase64
om body_encoding ärBASE64
, och returnerar strängen7bit
annars.
- get_output_charset()¶
Returnera den utgående teckenuppsättningen.
Detta är attributet output_charset om det inte är
None
, annars är det input_charset.
- header_encode(string)¶
Header-kodar strängen string.
Typen av kodning (base64 eller quoted-printable) baseras på attributet header_encoding.
- header_encode_lines(string, maxlengths)¶
Header-kodar en sträng genom att först konvertera den till bytes.
Detta liknar
header_encode()
förutom att strängen anpassas till maximala radlängder som anges av argumentet maxlengths, som måste vara en iterator: varje element som returneras från denna iterator ger nästa maximala radlängd.
- body_encode(string)¶
Brödtextskodning av strängen string.
Typen av kodning (base64 eller quoted-printable) baseras på attributet body_encoding.
Klassen
Charset
innehåller också ett antal metoder för att stödja standardoperationer och inbyggda funktioner.- __str__()¶
Returnerar input_charset som en sträng med små bokstäver.
__repr__()
är ett alias för__str__()
.
Modulen email.charset
innehåller även följande funktioner för att lägga till nya poster i de globala registren för teckenuppsättning, alias och codec:
- email.charset.add_charset(charset, header_enc=None, body_enc=None, output_charset=None)¶
Lägg till teckenegenskaper i det globala registret.
charset är teckenuppsättningen för indata och måste vara det kanoniska namnet på en teckenuppsättning.
Valfria header_enc och body_enc är antingen
charset.QP
för quoted-printable,charset.BASE64
för base64-kodning,charset.SHORTEST
för den kortaste av quoted-printable eller base64-kodning, ellerNone
för ingen kodning.SHORTEST
är endast giltigt för header_enc. Standardvärdet ärNone
för ingen kodning.Valfri output_charset är den teckenuppsättning som utdata ska vara i. Konverteringar kommer att fortsätta från indatans teckenuppsättning, till Unicode, till utdatans teckenuppsättning när metoden
Charset.convert()
anropas. Standardinställningen är att utdata ska vara i samma teckenuppsättning som indata.Både input_charset och output_charset måste ha Unicode-codec-poster i modulens teckenuppsättning-till-codec-mappning; använd
add_codec()
för att lägga till codecs som modulen inte känner till. Secodecs
-modulens dokumentation för mer information.Det globala teckensnittsregistret finns i modulens globala ordbok
CHARSETS
.
- email.charset.add_alias(alias, canonical)¶
Lägg till ett alias för teckenuppsättning. alias är aliasnamnet, t.ex.
latin-1
. canonical är teckenuppsättningens kanoniska namn, t.ex.iso-8859-1
.Registret över globala alias för teckensnittsinställningar finns i modulens globala ordbok
ALIASES
.
- email.charset.add_codec(charset, codecname)¶
Lägg till en codec som mappar tecken i den angivna teckenuppsättningen till och från Unicode.
charset är det kanoniska namnet på en teckenuppsättning. codecname är namnet på en Python-codec, vilket är lämpligt för det andra argumentet till
str
:sencode()
-metod.