如果不是 LF,该file
命令将返回文件的编码 + EOL。
但它同时ASCII
返回ANSI
和UTF-8 without BOM
。在UTF-8
文件上它返回UTF-8 Unicode (with BOM)
.
我做错了什么,或者这是默认行为?如果这是默认行为,我如何查看它是 ANSI 还是 UTF-8 而没有 BOM?
如果不是 LF,该file
命令将返回文件的编码 + EOL。
但它同时ASCII
返回ANSI
和UTF-8 without BOM
。在UTF-8
文件上它返回UTF-8 Unicode (with BOM)
.
我做错了什么,或者这是默认行为?如果这是默认行为,我如何查看它是 ANSI 还是 UTF-8 而没有 BOM?
file
尝试为您提供尽可能具体的信息(相反的情况是总是 printbinary file
,这在技术上是正确的,但不是很有用)。ANSI 不是特定的编码,而 UTF-8 是 ASCII 的超集,因此如果文件中包含的字节都在 ASCII 字符集中,它将报告两者的 ASCII。您无法确定文件是以 ASCII(8 位)还是 ANSI 或 UTF-8(无 BOM)编码的。这只是一个猜测
file
。当文件有 BOM时,
file
会猜测它是 UTF 编码的(UTF-8 或 UTF-16 或 UTF-32)。但是如果没有这个,你只会看到一个二进制数据流,它可能是一个以某种编码方式编码的文本文件。我敢打赌,
file
确定 ASCII 和 ISO-8859-1 之间的区别也将失败,因为前 128 个字节在两种编码中是相同的(如在 ANSI 中)。