echo random text > text_file
使用 ASCII 编码将 text_file 保存为文本格式。为了检查编码,我这样做
chardetect text_file
它告诉我该文件是 ASCII 编码的。现在我有一个 jpg 格式的文件,我做了同样的事情
chardetect my_image_file
但它无法识别该 jpg 文件中的任何编码。
我读过这两个答案(第一的和第二) 关于文件格式和文件编码之间的区别,并理解文件编码(ASCII、UTF-8 等)是为了向用户呈现数据(因为计算机无法理解英语)并且有时还进行完整性检查(Base64),而文件格式只是表示如何将数据呈现给应用程序进行解析(HTML、JSON 等),并且媒体和一些其他文件(JPEG、MP4、DOC、PDF)以二进制格式存储。
问题
- 我的理解正确吗?如果正确,二进制格式文件(PDF、MP4、JPEG)没有任何编码吗?
- 如果存在二进制文件(媒体/其他)的编码,如何使用终端检测它。
- 如何检测文件使用的格式(JSON、HTML、纯文本、PDF、GIF、JPEG 等),因为
chardetect
似乎只能提供有关文本编码的信息
答案1
使用file
命令determine file type (man file)
。
其他实用程序可以帮助进一步识别特定类型的文件:
chardetect
是universal character encoding detector (man chardetect)
。identify
describes the format and characteristics of one or more image files.
另外,查找其他特定于文件的实用程序,例如mediainfo
,,ffmpeg
。exiftool
答案2
在此上下文中(以及我对该命令的猜测),“编码”chardetect
特指文本在文本文件中的表示方式。其他文件也有编码,但指的有所不同。
我认为您正在寻找file
命令:它试图猜测文件使用的格式。