是否有 Linux 命令来确定文件是否为 UTF-8?

Edw*_*ard 19 linux joomla utf-8

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

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

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

Rik*_*Rik 31

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

file -bi filename
Run Code Online (Sandbox Code Playgroud)

  • 这会读取整个文件吗? (5认同)
  • @nicolas 对于 MacOS,您可以尝试`file -I filename`(-I 是大写的 i)。 (4认同)
  • 这不应该被接受为答案。'file' 命令不会这样做;它只读取文件的一部分并使用幻数进行最佳猜测。有时“文件”可以并且会给你不正确的答案。要验证文件是否通过诸如 ascii、iso-8859-1、utf-8 或其他任何编码,一个好的解决方案是使用“iconv”命令。 (4认同)
  • @kojow7 utf-8 没有标题。纯 ASCII(仅限 7 位)与 utf-8 没有区别(这就是它的重点,标头会导致各种问题)。因此,如果您有一个第一个 MB 的 ASCII 文件,然后有一个 UTF-8 字符,那么您将不会知道,除非您阅读整个文件。 (2认同)
  • 我已经测试过它,它可能而且确实会失败。 (2认同)

Pab*_* C. 13

有,使用moreutils包中的isutf8命令。

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



Tim*_*Tim 6

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

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

$ iconv -f utf8 <filename> -t utf8 -o /dev/null
Run Code Online (Sandbox Code Playgroud)

返回码为零表示它通过 UTF8。非零返回码意味着它不是有效的 UTF8。

这是不可能知道一个文件是使用任何特定的编码方案必然出口,一些编码方案重叠。要做到这一点,需要将元数据嵌入到文件中,即便如此,您也会信任生成该文件的人,而不是自己验证它……而且您应该始终自己验证它。