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

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.