Не используйте file
команду. Он не проверяет весь файл и в основном догадывается. Иногда дает неправильные ответы.
Вы можете проверить, проходит ли файл кодировку UTF-8 следующим образом:
$ iconv -f utf8 <filename> -t utf8 -o /dev/null
Код возврата нуля означает, что он проходит UTF8. Ненулевой код возврата означает, что он недействителен UTF8.
Это не возможно знать , если файл был обязательно экспортировать с помощью какой - либо конкретной схемы кодирования, так как некоторые кодирующие схемы перекрываются. Для этого потребуется встроить метаданные в файл, и даже тогда вы будете доверять тому, кто сгенерировал этот файл, а не проверять его самостоятельно ... и вы всегда должны проверять его самостоятельно.
file
пример программы, делающей умные догадки