"email.charset": Representing character sets
********************************************

**Πηγαίος κώδικας:** Lib/email.charset.py

======================================================================

Αυτό το module αποτελεί μέρος του παλιού API ("Compat32") του email.
Στο νέο API, χρησιμοποιείται μόνο ο πίνακας των ψευδωνύμων.

Το υπόλοιπο κείμενο σε αυτή την ενότητα είναι η αρχική τεκμηρίωση του
module.

Αυτό το module παρέχει την κλάση "Charset" για την αναπαράσταση των
συνόλων χαρακτήρων και των μετατροπών τους σε μηνύματα email, καθώς
και ένα μητρώο συνόλων χαρακτήρων και διάφορες βοηθητικές μεθόδους για
τη διαχείρισή του. Τα στιγμιότυπα της "Charset" χρησιμοποιούνται σε
αρκετά άλλα modules εντός του πακέτου "email".

Εισάγετε αυτή την κλάση από το module "email.charset".

class email.charset.Charset(input_charset=DEFAULT_CHARSET)

   Αντιστοίχιση συνόλων χαρακτήρων στις ιδιότητες τους στο email.

   Αυτή η κλάση παρέχει πληροφορίες σχετικά με τις απαιτήσεις που
   επιβάλλονται σε ένα email για ένα συγκεκριμένο σύνολο χαρακτήρων.
   Παρέχει επίσης βοηθητικές ρουτίνες για την μετατροπή μεταξύ συνόλων
   χαρακτήρων, εφόσον είναι διαθέσιμα τα αντίστοιχα codecs. Δεδομένου
   ενός συνόλου χαρακτήρων, θα προσπαθήσει να παρέχει πληροφορίες
   σχετικά με τον τρόπο χρήσης του σε ένα email με τρόπο συμβατό με το
   RFC.

   Ορισμένα σύνολα χαρακτήρων πρέπει να κωδικοποιούνται με quoted-
   printable ή base64 όταν χρησιμοποιούνται σε κεφαλίδες ή σώματα
   email. Ορισμένα σύνολα χαρακτήρων πρέπει να μετατραπούν πλήρως και
   δεν επιτρέπονται στα email.

   Το προαιρετικό *input_charset* περιγράφεται παρακάτω· μετατρέπεται
   πάντα σε πεζά. Μετά την κανονικοποίηση ψευδωνύμων, χρησιμοποιείται
   επίσης ως αναζήτηση στο μητρώο των συνόλων χαρακτήρων για να
   προσδιορίσει την κωδικοποίηση κεφαλίδας, την κωδικοποίηση σώματος
   και τον κωδικοποιητή μετατροπής εξόδου που θα χρησιμοποιηθεί για το
   σύνολο χαρακτήρων. Για παράδειγμα, εάν το *input_charset* είναι
   "iso-8859-1", τότε οι κεφαλίδες και τα σώματα θα κωδικοποιηθούν
   χρησιμοποιώντας quoted-printable και δεν απαιτείται codec
   μετατροπής εξόδου. Εάν το *input_charset* είναι "euc-jp", τότε οι
   κεφαλίδες θα κωδικοποιηθούν με base64, τα σώματα δεν θα
   κωδικοποιηθούν, αλλά το κείμενο εξόδου θα μετατραπεί από το σύνολο
   χαρακτήρων "euc-jp" στο "iso-2022-jp".

   Στιγμιότυπα της κλάσης "Charset" έχουν τα ακόλουθα χαρακτηριστικά
   δεδομένων:

   input_charset

      Το αρχικό σύνολο χαρακτήρων καθορίζεται. Τα κοινά ψευδώνυμα
      μετατρέπονται στα *επίσημα* ονόματα τους για το email (π.χ. το
      "latin_1" μετατρέπεται σε "iso-8859-1"). Προεπιλογή είναι το
      7-bit "us-ascii".

   header_encoding

      If the character set must be encoded before it can be used in an
      email header, this attribute will be set to "Charset.QP" (for
      quoted-printable), "Charset.BASE64" (for base64 encoding), or
      "Charset.SHORTEST" for the shortest of QP or BASE64 encoding.
      Otherwise, it will be "None".

   body_encoding

      Same as *header_encoding*, but describes the encoding for the
      mail message's body, which indeed may be different than the
      header encoding. "Charset.SHORTEST" is not allowed for
      *body_encoding*.

   output_charset

      Ορισμένα σύνολα χαρακτήρων πρέπει να μετατραπούν πριν
      χρησιμοποιηθούν σε κεφαλίδες ή σώματα email. Αν το
      *input_charset* είναι ένα από αυτά, αυτό το χαρακτηριστικό θα
      περιέχει το όνομα του συνόλου χαρακτήρων στο οποίο θα μετατραπεί
      η έξοδος. Αλλιώς, θα είναι "None".

   input_codec

      Το όνομα του Python codec που χρησιμοποιείται για την μετατροπή
      του *input_charset* σε Unicode. Αν δεν απαιτείται codec
      μετατροπής, αυτό το χαρακτηριστικό θα είναι "None".

   output_codec

      Το όνομα του Python codec που χρησιμοποιείται για την μετατροπή
      του Unicode στο *output_charset*. Αν δεν απαιτείται codec
      μετατροπής, αυτό το χαρακτηριστικό θα έχει την ίδια τιμή με το
      *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*
      μετατρέποντας το πρώτα σε bytes.

      Αυτό είναι παρόμοιο με την μέθοδο "header_encode()", εκτός από
      το ότι το string τοποθετείται στις μέγιστες γραμμές μήκους που
      δίνονται από το όρισμα *maxlengths*, το οποίο πρέπει να είναι
      ένας iterator: κάθε στοιχείο που επιστρέφεται από αυτόν τον
      iterator θα παρέχει το επόμενο μέγιστο μήκος γραμμής.

   body_encode(string)

      Κωδικοποίηση σώματος της συμβολοσειράς *string*.

      Ο τύπος κωδικοποίησης (base64 ή quoted-printable) θα βασίζεται
      στο χαρακτηριστικό *body_encoding*.

   Η κλάση "Charset" παρέχει επίσης αρκετές μεθόδους για να
   υποστηρίξει τις τυπικές λειτουργίες και τις ενσωματωμένες
   συναρτήσεις.

   __str__()

      Επιστρέφει το *input_charset* ως συμβολοσειρά που έχει
      μετατραπεί σε πεζά. Η μέθοδος "__repr__()" είναι ένα ψευδώνυμο
      για την μέθοδο "__str__()".

   __eq__(other)

      Αυτή η μέθοδος σας επιτρέπει να συγκρίνετε δύο στιγμιότυπα της
      κλάσης "Charset" για ισότητα.

   __ne__(other)

      Αυτή η μέθοδος σας επιτρέπει να συγκρίνετε δύο στιγμιότυπα της
      κλάσης "Charset" για ανισότητα.

Το module "email.charset" παρέχει επίσης τις εξής συναρτήσεις για
προσθήκη νέων καταχωρήσεων στις καθολικά μητρώα συνόλων χαρακτήρων,
ψευδωνύμων και κωδικοποιητών:

email.charset.add_charset(charset, header_enc=None, body_enc=None, output_charset=None)

   Προσθέστε ιδιότητες χαρακτήρων στο καθολικό μητρώο.

   Το *charset* είναι το σύνολο χαρακτήρων εισόδου, και πρέπει να
   είναι το κανονικό όνομα ενός συνόλου χαρακτήρων.

   Optional *header_enc* and *body_enc* is either "Charset.QP" for
   quoted-printable, "Charset.BASE64" for base64 encoding,
   "Charset.SHORTEST" for the shortest of quoted-printable or base64
   encoding, or "None" for no encoding.  "SHORTEST" is only valid for
   *header_enc*. The default is "None" for no encoding.

   Προαιρετικό *output_charset* είναι το σύνολο χαρακτήρων στο οποίο
   θα πρέπει να βρίσκεται η έξοδος. Οι μετατροπές θα γίνονται από το
   εισερχόμενο σύνολο χαρακτήρων, σε Unicode, και στη συνέχεια στο
   σύνολο χαρακτήρων εξόδου όταν καλείται η μέθοδος
   "Charset.convert()".  Η προεπιλογή είναι να εξάγεται το ίδιο σύνολο
   χαρακτήρων με το εισερχόμενο.

   Τόσο το *input_charset* όσο και το *output_charset* πρέπει να έχουν
   καταχωρίσεις Unicode codec στη χαρτογράφηση χαρακτήρων προς codec
   του module· χρησιμοποιήστε την συνάρτηση "add_codec()" για να
   προσθέσετε codecs που το module δεν γνωρίζει. Δείτε την τεκμηρίωση
   του module "codecs" για περισσότερες πληροφορίες.

   Το καθολικό μητρώο συνόλων χαρακτήρων διατηρείται στο καθολικό
   dictionary του module "CHARSETS".

email.charset.add_alias(alias, canonical)

   Προσθέστε ένα ψευδώνυμο συνόλου χαρακτήρων. Το *alias* είναι το
   όνομα του ψευδωνύμου, π.χ. "latin-1". Το *canonical* είναι το
   κανονικό όνομα του συνόλου χαρακτήρων, π.χ. "iso-8859-1".

   Το παγκόσμιο μητρώο ψευδωνύμων συνόλων χαρακτήρων διατηρείται στο
   καθολικό λεξικό του module "ALIASES".

email.charset.add_codec(charset, codecname)

   Προσθέστε έναν κωδικοποιητή που αντιστοιχεί χαρακτήρες από το
   δεδομένο σύνολο χαρακτήρων προς και από Unicode.

   Το *charset* είναι το κανονικό όνομα ενός συνόλου χαρακτήρων. Το
   *codecname* είναι το όνομα ενός κωδικοποιητή Python, ως κατάλληλο
   για το δεύτερο όρισμα της μεθόδου "encode()" της κλάσης "str".
