Linux命令'file'如何识别我的文件的编码?

Linux命令'file'如何识别我的文件的编码?,linux,Linux,Linux命令file如何识别文件的编码 zell@ubuntu:~$ file examples.desktop examples.desktop: UTF-8 Unicode text zell@ubuntu:~$ file /etc/services /etc/services: ASCII text 问题很清楚 文件系统测试基于检查stat(2)的返回 系统调用 魔法测试用于检查文件中是否有特定的数据 固定格式。这方面的典型示例是二进制可执行文件 (编译程序)一个.out文件,其

Linux命令
file
如何识别文件的编码

zell@ubuntu:~$ file examples.desktop 
examples.desktop: UTF-8 Unicode text

zell@ubuntu:~$ file /etc/services 
/etc/services: ASCII text
问题很清楚

文件系统测试基于检查stat(2)的返回 系统调用

魔法测试用于检查文件中是否有特定的数据 固定格式。这方面的典型示例是二进制可执行文件 (编译程序)一个.out文件,其格式在#include中定义 而且可能#包括在标准中#包括 目录这些文件有一个“神奇的数字”存储在特定的文件夹中 放在告知UNIX操作系统的文件开头附近 系统认为该文件是一个二进制可执行文件,以及以下哪一种 其类型。“魔法”的概念已被推广应用 数据文件。在小范围内具有某种不变标识符的任何文件 文件中的固定偏移量通常可以这样描述。这个 识别这些文件的信息从已编译的magic中读取 文件/usr/share/misc/magic.mgc或目录中的文件 /如果编译的文件不存在,则使用usr/share/misc/magic。在里面 此外,如果存在$HOME/.magic.mgc或$HOME/.magic,则将使用它 优先于系统魔法文件。如果/etc/magic存在,它将 可与其他魔法文件一起使用

如果文件与魔法文件中的任何条目都不匹配,则为 检查它是否是一个文本文件。ASCII,ISO-8859-x, 非ISO 8位扩展ASCII字符集(例如在 Macintosh和IBM PC系统),UTF-8编码Unicode,UTF-16编码 Unicode和EBCDIC字符集可以通过 构成可打印文本的不同字节范围和序列 每一套都有。如果文件通过了这些测试中的任何一个,则其字符集为 报道

简言之,对于常规文件,将对其进行测试。如果不匹配,则
file
检查它是否为文本文件,通过查看文件中字节的实际值,对特定编码进行有根据的猜测


哦,您还可以自己查看实现。

Do
man文件
中的最终可能副本,等等。