Кодировку можно определить аналитически по содержимому, метод не 100%. Можно взять готовую утилиту командной строки enca, она умеет большое количество кодировок и языков, в т.ч. дважды перекодированные (например взяли dos 866 кодировку, открыли в cp1251, и сохранили в utf8, по крайней мере такие финты при копировании текста с коряво настроенных веб сайтов, работали).