是否有一个 Linux 命令可以查明某个文件是否是 UTF-8?

是否有一个 Linux 命令可以查明某个文件是否是 UTF-8?

Joomla.ini文件需要保存为 UTF-8。

编辑后,我不确定文件是否是 UTF-8。

是否有类似的 Linux 命令file或一些命令可以判断文件是否确实是 UTF-8?

答案1

您可以使用以下命令确定文件编码:

file -bi filename

答案2

有,使用isutf8命令更多工具包裹。

来源:如何判断文件是否是 UTF-8 编码的?


答案3

不要使用该file命令。它不会检查整个文件,基本上只是猜测。它有时会给出错误的答案。

您可以验证文件是否恰好通过了 UTF-8 编码,如下所示:

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

返回代码为零表示它通过了 UTF8。非零返回代码表示它不是有效的 UTF8。

这是不可能知道文件是否必须使用任何特定的编码方案导出,因为有些编码方案是重叠的。要做到这一点,需要将元数据嵌入到文件中,即使这样,您也会信任生成该文件的人,而不是亲自验证它……而且您应该始终亲自验证它。

答案4

另一种方法是使用recode,如果它尝试解码 UTF-8 并且遇到无效字符,则会退出并出现错误。

if recode utf8/..UCS < "$FILE" >/dev/null 2>&1; then
    echo "Valid utf8 : $FILE"
else
    echo "NOT valid utf8: $FILE"
fi

相关内容