Linux`file`命令显示编码

如果file命令不是LF,则file命令返回file的编码+ EOL。

但是它返回ASCIIANSIUTF-8 without BOM 。 在UTF-8文件上,它返回UTF-8 Unicode (with BOM)

我做错了什么,或者这是默认行为? 如果这是默认的行为,我可以看到如果是没有BOM的ANSI或UTF-8?

file试图给你作为具体信息尽可能(相反的情况下总是打印binary file ,这在技术上是正确的,但不是非常有用)。 ANSI不是特定的编码 ,而UTF-8是ASCII的超集 ,所以如果文件中包含的字节都在ASCII字符集内,则它将报告ASCII。

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

当一个文件有一个BOM时, file会猜测它是UTF编码(UTF-8或UTF-16或UTF-32)。 但是没有这个,你只能看到一个二进制数据stream,这个数据stream可能是以某种编码方式编码的文本文件。

我敢打赌,这个file在确定ASCII和ISO-8859-1之间的差别时也会失败,因为前两个字节在两个编码中都是相同的(如ANSI)。