• charset
  • encoding
  • decode
  • str
  • chardet
  • string
  • encode
  • bytes

It is impossible to correctly detect the encoding of an arbitrary byte string 100% of the time.

Use the chardet package, or Beautiful Soup’s UnicodeDammit class to attempt to detect the charset using various heuristics.