Подробный гайд: Как узнать кодировку JPEG
У JPEG нет текстовой кодировки в привычном смысле — UTF-8, Windows-1251, KOI8-R и т.п. .jpg / .jpeg — это бинарный формат изображения. Внутри него нет «строки текста», которую можно декодировать как текст.
Но под «кодировкой» обычно понимают одно из трёх:
- Тип файла / MIME / реальный формат — действительно ли это JPEG.
- Параметры сжатия и цветности — baseline/progressive, YCbCr/RGB/CMYK, 8/12 бит, субдискретизация.
- Кодировку текстовых метаданных — EXIF, IPTC, XMP. Вот там текст может быть в ASCII, UTF-8, UTF-16, Latin-1 и т.д.
Ниже — как посмотреть всё это разными способами.
1. Быстрая проверка: это точно JPEG?
JPEG начинается с сигнатуры FF D8 FF.
Linux / macOS
file image.jpg
file -i image.jpg # MIME + charset, обычно image/jpeg; charset=binary
xxd -l 16 image.jpg # первые байты
Пример:
image.jpg: JPEG image data, JFIF standard 1.01, baseline, precision 8, 1920x1080, components 3
image.jpg: image/jpeg; charset=binary
charset=binary — это и есть ответ: для JPEG текстовая кодировка не применима.
Windows PowerShell
Format-Hex -Path .\image.jpg -Count 16
или:
Get-Content .\image.jpg -AsByteStream -TotalCount 16
В Windows PowerShell 5.1:
Get-Content .\image.jpg -Encoding Byte -TotalCount 16
Ожидаемое начало: FF D8 FF E0 ... или FF D8 FF E1 ....
2. Главный инструмент: ExifTool
ExifTool — лучший способ посмотреть метаданные JPEG и их кодировки.
Установка
- Windows:
choco install exiftoolили скачать с официального сайта. - macOS:
brew install exiftool - Linux:
sudo apt install libimage-exiftool-perl
Базовый просмотр
exiftool image.jpg
Все теги с группами:
exiftool -G1 -a -s image.jpg
Вывод в JSON:
exiftool -j image.jpg > meta.json
Как посмотреть кодировку метаданных
exiftool -charset exif=utf8 -charset iptc=utf8 -charset xmp=utf8 image.jpg
Текстовые поля:
exiftool -UserComment -CodedCharacterSet -XPTitle -XPComment -XPAuthor -XPKeywords -XPSubject image.jpg
IPTC:
exiftool -IPTC:CodedCharacterSet image.jpg
Извлечь XMP-пакет и проверить его кодировку:
exiftool -xmp -b image.jpg > meta.xmp
file -i meta.xmp
Что означают кодировки в метаданных
- EXIF:
- Обычные текстовые теги — обычно ASCII.
UserCommentимеет 8-байтовый префикс:ASCII\0\0\0,UNICODE\0,JIS\0\0\0\0\0.XPTitle,XPComment,XPAuthorи т.п. — обычно UTF-16LE с BOM.
- IPTC:
- Тег
CodedCharacterSet. Если тамESC % G— это UTF-8. - Если тега нет — обычно ISO-8859-1 / Latin-1.
- Тег
- XMP:
- Это XML. Почти всегда UTF-8, реже UTF-16.
- Можно открыть извлечённый
.xmpв текстовом редакторе и посмотреть BOM/объявление<?xml version="1.0" encoding="..."?>.
- ICC:
- Это цветовой профиль, не текст. Кодировки там нет.
3. Альтернативы ExifTool
exiv2
exiv2 -pa image.jpg # все метаданные
exiv2 -pS image.jpg # структура файла
exiv2 -pt image.jpg # интерпретированные теги
ImageMagick
identify -verbose image.jpg
или:
magick identify -verbose image.jpg
Покажет формат, цветовое пространство, глубину, EXIF, ICC и т.д.
Python + Pillow
from PIL import Image, ExifTags
img = Image.open("image.jpg")
print("Формат:", img.format)
print("Режим:", img.mode)
print("Размер:", img.size)
print("INFO:", img.info)
exif = img.getexif()
for tag_id, value in exif.items():
tag = ExifTags.TAGS.get(tag_id, tag_id)
print(tag, "=", value)
Если нужно проверить кодировку текста внутри XMP:
import chardet
xmp = img.info.get("xmp")
if xmp:
print(chardet.detect(xmp))
Hex-редактор
Любой hex-редактор: HxD, 010 Editor, Okteta, Bless.
Смотрите первые байты и ищите текстовые блоки Exif, http://ns.adobe.com/xap/1.0/, Photoshop 3.0, ICC_PROFILE.
4. GUI-способы
Windows
- ExifToolGUI — графическая оболочка для ExifTool.
- XnView MP — правый блок
Metadata. - IrfanView —
Image→Information(клавишаI). - FastStone Image Viewer — свойства изображения.
- Проводник Windows — правый клик →
Свойства→Подробно. Но там показываются метаданные, а не «кодировка» в техническом смысле.
macOS
- Preview →
Tools→Show Inspector(Cmd+I) → вкладка EXIF. mdls image.jpg— метаданные Spotlight.- ExifTool через Terminal.
Linux
- GIMP →
Image→Metadata→View Metadata. - XnView MP, Gwenview, digiKam.
exiftool,exiv2,identify.
5. Онлайн-сервисы
Можно посмотреть EXIF/IPTC/XMP онлайн:
- exif.tools
- metapicz.com
- jimpl.com
Не загружайте личные фото на онлайн-сервисы: там могут быть GPS-координаты, имена, даты.
6. Если вы имели в виду кодировку текста, а не JPEG
Если файл .jpg на самом деле является переименованным .txt, то можно попробовать определить кодировку текста:
file -i file.jpg
uchardet file.jpg
Python:
import chardet
data = open("file.jpg", "rb").read()
print(chardet.detect(data))
Но если это настоящий JPEG, вы получите binary или мусор — это нормально.
7. Краткая шпаргалка
| Что нужно | Команда / инструмент |
|---|---|
| Проверить, что это JPEG | file image.jpg, xxd -l 16 image.jpg |
| MIME и charset | file -i image.jpg |
| Все метаданные | exiftool image.jpg |
| Кодировка IPTC | exiftool -IPTC:CodedCharacterSet image.jpg |
| Кодировка XMP | exiftool -xmp -b image.jpg > meta.xmp; file -i meta.xmp |
| EXIF UserComment | exiftool -UserComment image.jpg |
| Параметры изображения | identify -verbose image.jpg |
| GUI | ExifToolGUI, XnView MP, IrfanView, Preview, GIMP |
Важно:
Для .jpg / .jpeg «кодировка» — это не UTF-8/Windows-1251, а binary. Если вас интересует текст внутри метаданных, используйте ExifTool и смотрите поля EXIF, IPTC, XMP.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.