Как вы ожидаете, что код перекодировки узнает, что это файл Windows-1252? Теоретически, я считаю, что любой файл является допустимым файлом Windows-1252, поскольку он сопоставляет каждый возможный байт с символом.
Теперь, безусловно, есть характеристики, которые настоятельно подсказывают , что это UTF-8 - если он начинается, например, с спецификации UTF-8 - но они не будут окончательными.
Один из вариантов - определить, действительно ли это первый файл UTF-8, сначала, я полагаю ... опять-таки, это только наводит на мысль.
Я не знаком с самим инструментом перекодирования, но вы можете посмотреть, способен ли он перекодировать файл из и в такую же кодировку - если вы делаете это с недопустимым файлом (т.е. тот, который содержит недопустимые байтовые последовательности UTF-8), вполне может преобразовать недопустимые последовательности в знаки вопроса или что-то подобное. В этот момент вы можете обнаружить, что файл является допустимым UTF-8, перекодировав его в UTF-8 и проверив, идентичны ли вход и выход.
В качестве альтернативы, делайте это программно, а не с помощью утилиты перекодирования - это было бы довольно просто, например, в C #.
Просто повторюсь: все это эвристично. Если вы действительно не знаете кодировку файла, ничто не скажет вам это со 100% точностью.