Бинарные форматы кодирования

775
GypsyCosmonaut
echo random text > text_file 

Сохраняет текстовый файл в текстовом формате с кодировкой ASCII. Чтобы проверить кодировку, я делаю

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кажется, что он сообщает только информацию о кодировке текста
0

2 ответа на вопрос

1
Steven

Используйте 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.

0
lungj

«Кодировка» в этом контексте (и мое предположение о chardetectкоманде) относится конкретно к способу представления текста в текстовом файле. Другие файлы тоже имеют кодировки, но это относится к чему-то другому.

Я думаю, что вы ищете fileкоманду: она пытается угадать, какой формат использует файл.