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 一样)。