Есть ли команда 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