Есть ли команда Linux, чтобы узнать, является ли файл UTF-8?

Joomla .ini файлы должны быть сохранены как UTF-8.

После редактирования я не уверен, являются ли файлы UTF-8 или нет.

Есть ли команда Linux, как file или несколько команд, которые бы сказали, является ли файл действительно UTF-8 или нет?

2 ответа

Вы можете определить кодировку файла с помощью следующей команды:

file -bi filename

Есть, используй isutf8 команда из пакета moreutils.

Источник: Как вы можете определить, является ли файл в кодировке UTF-8 или нет?


Не используйте fileкоманда. Он не проверяет весь файл, а в основном делает предположения. Иногда дает неправильные ответы.

Вы можете проверить, проходит ли файл кодировку UTF-8 следующим образом:

$ iconv -f utf8 <filename> -t utf8 -o /dev/null

Нулевой код возврата означает, что он передает UTF8. Ненулевой код возврата означает, что это недопустимый UTF8.

Это не возможно знать, если файл был обязательно экспортировать с помощью какой - либо конкретной схемы кодирования, так как некоторые кодирующие схемы перекрываются. Для этого потребуются встраиваемые в файл метаданные, и даже в этом случае вы будете доверять тому, кто создал этот файл, вместо того, чтобы проверять его самостоятельно... и вы всегда должны проверять его самостоятельно.

Еще один способ - использовать recode, который завершится с ошибкой, если попытается декодировать UTF-8 и обнаружит недопустимые символы.

if recode utf8/..UCS < "$FILE" >/dev/null 2>&1; then
    echo "Valid utf8 : $FILE"
else
    echo "NOT valid utf8: $FILE"
fi
Другие вопросы по тегам