二进制编码格式

二进制编码格式
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)

其他实用程序可以帮助进一步识别特定类型的文件:

  • chardetectuniversal character encoding detector (man chardetect)
  • identify describes the format and characteristics of one or more image files.

另外,查找其他特定于文件的实用程序,例如mediainfo,,ffmpegexiftool

答案2

在此上下文中(以及我对该命令的猜测),“编码”chardetect特指文本在文本文件中的表示方式。其他文件也有编码,但指的有所不同。

我认为您正在寻找file命令:它试图猜测文件使用的格式。

相关内容