Linux `file` 命令显示编码

Linux `file` 命令显示编码

file如果不是 LF,该命令将返回文件的编码 + EOL。

ASCII但对于ANSI和它都返回UTF-8 without BOM。对于UTF-8文件它返回UTF-8 Unicode (with BOM)

我做错了什么,还是这是默认行为?如果这是默认行为,我如何知道它是 ANSI 还是没有 BOM 的 UTF-8?

答案1

file尝试向您提供尽可能具体的信息(相反的情况是始终打印binary file,这在技术上是正确的,但不是很有用)。ANSI 不是特定的编码,而 UTF-8 是超集ASCII,因此如果文件中包含的字节全部都在 ASCII 字符集内,它将报告 ASCII。

答案2

您无法确定文件是以 ASCII(8 位)还是 ANSI 或 UTF-8(无 BOM)编码的。这只是猜测file

当文件有 BOM 时,file系统会猜测它是 UTF 编码的(UTF-8、UTF-16 或 UTF-32)。但如果没有这个,您只能看到二进制数据流,这可能是以某种编码编码的文本文件。

我敢打赌,这file也无法确定 ASCII 和 ISO-8859-1 之间的差异,因为两种编码中的前 128 个字节是相同的(与 ANSI 一样)。

相关内容