code: def header_encode(
      header,
      charset="iso-8859-1",
      keep_eols=False,
      maxlinelen=76,
      eol=NL,
  ):
      """Encode a single header line with quoted-printable (like) encoding.
  
      Defined in RFC 2045, this `Q' encoding is similar to quoted-printable, but
      used specifically for email header fields to allow charsets with mostly 7
      bit characters (and some 8 bit) to remain more or less readable in non-RFC
      2045 aware mail clients.
  
      charset names the character set to use to encode the header.  It defaults
      to iso-8859-1.
  
      The resulting string will be in the form:
  
      "=?charset?q?I_f=E2rt_in_your_g=E8n=E8ral_dire=E7tion?\\n
        =?charset?q?Silly_=C8nglish_Kn=EEghts?="
  
      with each line wrapped safely at, at most, maxlinelen characters (defaults
      to 76 characters).  If maxlinelen is None, the entire string is encoded in
      one chunk with no splitting.
  
      End-of-line characters (\\r, \\n, \\r\\n) will be automatically converted
      to the canonical email line separator \\r\\n unless the keep_eols
      parameter is True (the default is False).
  
      Each line of the header will be terminated in the value of eol, which
      defaults to "\\n".  Set this to "\\r\\n" if you are using the result of
      this function directly in email.
      """
      # Return empty headers unchanged
      if not header:
          return header
  
      if not keep_eols:
          header = fix_eols(header)
  
      # Quopri encode each line, in encoded chunks no greater than maxlinelen in
      # length, after the RFC chrome is added in.
      quoted = []
      if maxlinelen is None:
          # An obnoxiously large number that's good enough
          max_encoded = 100000
      else:
          max_encoded = maxlinelen - len(charset) - MISC_LEN - 1
  
      for c in header:
          # Space may be represented as _ instead of =20 for readability
          if c == " ":
              _max_append(quoted, "_", max_encoded)
          # These characters can be included verbatim
          elif not hqre.match(c):
              _max_append(quoted, c, max_encoded)
          # Otherwise, replace with hex value like =E2
          else:
              _max_append(quoted, "=%02X" % ord(c), max_encoded)
  
      # Now add the RFC chrome to each encoded chunk and glue the chunks
      # together.  BAW: should we be able to specify the leading whitespace in
      # the joiner?
      joiner = eol + " "
      return joiner.join(
          ["=?%s?q?%s?=" % (charset, line) for line in quoted]
      )
  
file_path: catboost/contrib/tools/python/src/Lib/email/quoprimime.py
imports: import re
  from string import hexdigits
  from email.utils import fix_eols
label_desc: Use image node_id 8 for calling a global function with example usage: header_encode(header, charset, keep_eols, maxlinelen, eol) and returns: joiner, header