Пустой текстовый файл имеет необнаружимую кодировку символов (кроме случаев, когда он имеет спецификацию Unicode).
Но, по сути, вы должны либо потребовать от пользователя указать, какую кодировку символов использует файл, который он вам дает, либо указать, какой из них использовать (или оба, если вы задаете значение по умолчанию, но допускаете его переопределение [которое это то, что делают многие компиляторы.]).
Затем вы можете проверить содержимое на предмет соответствия согласованной кодировке символов. Это вызовет некоторые ошибки, но обратите внимание, что многие кодировки символов допускают любую последовательность байтов с любым значением, поэтому любой контент всегда действителен (даже если кодировка символов отличается от той, что использовалась для записи файла).
Затем вы можете проверить соответствие ожидаемым значениям, таким как некоторый синтаксис или допустимый символ или слова, чтобы отследить больше ошибок (но вы не обязательно сможете сказать, что кодировка символов не совпадает; это может быть просто содержание неверно).
Для создания файлов с различной кодировкой символов вы можете написать программу или использовать стороннюю программу, такую как iconv или PowerShell.
Если вам нужна неизвестная кодировка символов, просто сгенерируйте случайную целочисленную карту, преобразуйте файл, сбросьте карту, и тогда даже вы ее не узнаете.
В конечном счете, текстовые файлы являются слишком техническими для пользователей, чтобы иметь с ними дело. Дайте им какой-нибудь другой вариант, например открытый документ или формат электронной таблицы, например .odt, .docx, .ods или .xlsx. Они очень легко читаются программами.