Спецификации часто отсутствуют в файлах UTF-8. Как следствие, вы не можете знать, является ли файл ASCII или UTF-8, пока вы не прочитаете данные и не найдете байт, который не является ASCII.
Кроме того, поскольку вы работаете в Windows, намереваетесь ли вы работать с ISO-8859-1 и Windows-1252? Последнее часто используется по умолчанию для файлов из таких вещей, как Блокнот и Wordpad. В этих случаях дела обстоят еще хуже: эвристически можно различать такие кодировки, другие кодировки и UTF-8.
В библиотеке ICU есть система определения набора символов , которую можно использовать, чтобы угадать вероятную кодировку символов файла. Я не верю, что у iconv есть такая функция.
ICU, как правило, доступен, уже установлен на Mac и Linux, но, увы, не на Windows. Такая подпрограмма также может быть доступна в Win32 API.