docs: def data_to_bytes(data, encoding):
      """\
      Converts the provided data into bytes. If the data is already a byte
      sequence, it will be left unchanged.
  
      This function tries to use the provided `encoding` (if not ``None``)
      or the default encoding (ISO/IEC 8859-1). It uses UTF-8 as fallback.
  
      Returns the (byte) data, the data length and the encoding of the data.
  
      :param data: The data to encode
      :type data: str or bytes
      :param encoding: str or ``None``
      :rtype: tuple: data, data length, encoding
      """
      if isinstance(data, bytes):
          return data, len(data), encoding or consts.DEFAULT_BYTE_ENCODING
      data = str(data)
      if encoding is not None:
          # Use the provided encoding; could raise an exception by intention
          data = data.encode(encoding)
      else:
          try:
              # Try to use the default byte encoding
              encoding = consts.DEFAULT_BYTE_ENCODING
              data = data.encode(encoding)
          except UnicodeError:
              try:
                  # Try Kanji / Shift_JIS
                  encoding = consts.KANJI_ENCODING
                  data = data.encode(encoding)
              except UnicodeError:
                  # Use UTF-8
                  encoding = 'utf-8'
                  data = data.encode(encoding)
      return data, len(data), encoding