Обычно это чрезвычайно сложно сделать. Основная проблема заключается в том, что все основанные на ascii кодировки (iso-8859- *, dos и windows codepages) используют один и тот же диапазон кодовых точек, поэтому ни одна конкретная кодовая точка или набор кодовых точек не скажут вам, в какой кодовой странице находится текст.
Есть одна кодировка, которую легко узнать. Если это допустимый UTF-8, то почти наверняка нет ни iso-8859- *, ни какой-либо кодовой страницы Windows, потому что, хотя в них действительны все байтовые значения, вероятность появления в них правильной многобайтовой последовательности utf-8 почти ноль.
Чем это зависит от того, какие дополнительные кодировки могут быть задействованы. Допустимая последовательность в Shift-JIS или Big-5 также вряд ли будет действительной в любой другой кодировке, в то время как для разбора аналогичных кодировок, таких как cp1250 и iso-8859-2, требуется проверка орфографии слов, которые содержат 3 или около того символов, которые различаются и видны. каким образом вы получите меньше ошибок.
Если вы можете ограничить число преобразований, которые могли произойти, не должно быть слишком сложно создать скрипт на python, который их опробует, устранит очевидные ошибки и использует проверку орфографии, чтобы выбрать наиболее вероятный , Я не знаю ни о каком инструменте, который бы это делал.