Have you tried chardet? Check this out:

```python
>>> chardet.detect(u"holá".encode("iso8859-1"))
{'confidence': 0.99, 'encoding': 'ISO-8859-2'}
>>> chardet.detect(u"holá".encode("iso8859-1").decode("iso8859-1"))
{'confidence': 0.99, 'encoding': 'ISO-8859-2'}
>>> chardet.detect(u"holá".encode("utf8"))
{'confidence': 0.99, 'encoding': 'TIS-620'}
>>> chardet.detect(u"holá".encode("utf8").decode("utf8"))
{'confidence': 0.99, 'encoding': 'ISO-8859-2'}
```

May be I'm using it the wrong way... but I think we should with "try to properly support encodings one at a time, lets start with utf8 and iso8859-1"