Есть LIB для обнаружения кодировки: https://pypi.python.org/pypi/chardet (АВТОМОБИЛЬНЫЕ ДЕТАТНОСТИ САМАНИЯ В ПИТОНЕ. Такой умный, как ваш браузер. Открытый исходный код)
Обнаруживает ...
- ASCII, UTF-8, UTF-16 (2 варианта), UTF-32 (4 варианта)
- Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (традиционный и упрощенный китайский)
- Euc-jp, shift_jis, iso-2022-jp (японский)
- Euc-kr, iso-2022-kr (корейский)
- Koi8-R, Maccyrillic, IBM855, IBM866, ISO-8859-5, Windows-1251 (Cyrillic)
- ISO-8859-2, Windows-1250 (венгерский)
- ISO-8859-5, Windows-1251 (болгарский)
- Windows-1252 (английский)
- ISO-8859-7, Windows-1253 (греческий)
- ISO-8859-8, Windows-1255 (визуальный и логичный иврит)
- TIS-620 (тайский)
Пример из документов:
>>> import urllib
>>> rawdata = urllib.urlopen('http://yahoo.co.jp/').read()
>>> import chardet
>>> chardet.detect(rawdata)
{'encoding': 'EUC-JP', 'confidence': 0.99}