Битлента
Пароли, резервные копии, шифрование6 мин чтения·

Субтитры показывают кракозябры: как определить и исправить кодировку файла SRT

Почему русские субтитры превращаются в странные символы, как по виду искажений определить кодировку, как сохранить файл в UTF-8 и что делать, если дело не в кодировке.

Кратко

Кракозябры в субтитрах появляются, когда плеер читает байты в другой кодировке, чем та, в которой файл сохранён. Исправление: выбрать кодировку в настройках плеера или открыть файл в текстовом редакторе с нужной кодировкой и пересохранить его в UTF-8.

Откуда берутся странные символы

Текстовый файл хранит не буквы, а числа: каждой букве соответствует один или несколько байтов. Таблица, по которой байты превращаются в буквы, называется кодировкой. Если файл записан по одной таблице, а программа читает его по другой, числа остаются теми же, а буквы получаются чужие. Так и возникают кракозябры.

Для кириллицы исторически сложилось несколько таблиц. Windows-1251 использовалась в русскоязычной Windows, CP866 встречалась в старых программах для DOS, KOI8-R была распространена в системах семейства Unix. Современный стандарт — UTF-8, он охватывает практически все языки сразу и используется в большинстве новых программ. Субтитры, созданные много лет назад или в старых программах, нередко записаны в Windows-1251, а проигрыватель на телевизоре или телефоне по умолчанию ожидает UTF-8, и наоборот.

Это не поломка файла: данные на месте, нужно только указать правильную таблицу. Поэтому прежде чем удалять «испорченные» субтитры или искать другие, стоит попробовать открыть тот же файл с другой кодировкой. Необратимым остаётся случай — когда файл уже был сохранён в неподходящей кодировке, и непредставимые символы заменились вопросительными знаками. Тогда вернуть буквы из самого файла нельзя.

По виду искажений можно угадать причину

Разные ошибки дают разные характерные узоры. Если запомнить несколько типичных, подобрать кодировку удаётся с первой попытки. Слово «Привет» в таблице ниже служит примером.

Что видно на экранеЧто произошлоЧто выбрать
ПриветТекст в UTF-8 прочитан как Windows-1251UTF-8
ÏðèâåòТекст в Windows-1251 прочитан как западноевропейская таблицаWindows-1251
??????Буквы потеряны при сохранении в неподходящей кодировкеВзять исходный файл, сохранённый до порчи
ромбики со знаком вопросаПлеер не смог разобрать байты и подставил символ заменыПопробовать другую кодировку

Закономерности объясняются просто. Каждая русская буква в UTF-8 занимает два байта, и при чтении по Windows-1251 эти два байта дают два чужих символа, поэтому текст «растягивается» вдвое и в нём много пар вида «Р» и «С». В Windows-1251 каждая буква занимает один байт, и при чтении по западноевропейской таблице получаются буквы с диакритикой.

Если картина не похожа ни на один пример, запишите, что именно видите, и попробуйте остальные кодировки по очереди, пока текст не станет читаемым.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Исправление в самом плеере

Быстрее всего действовать так: сменить кодировку в настройках воспроизведения, не трогая файл. Во многих настольных проигрывателях в меню субтитров есть пункт с выбором кодировки, иногда он спрятан в расширенных настройках. Названия пунктов зависят от программы и версии, поэтому ищите слова «субтитры», «кодировка» или «шрифт».

Порядок действий такой:

  1. Включите субтитры и убедитесь, что они отображаются, пусть и в искажённом виде.
  2. Откройте настройки субтитров и найдите выбор кодировки или набора символов.
  3. Выберите UTF-8, затем Windows-1251, если первая попытка не помогла.
  4. Если текст стал читаемым, запомните выбор: часть программ применяет его ко всем файлам, часть запрашивает заново.

На телевизорах и приставках такой выбор бывает ограничен, а иногда его нет вовсе. В этом случае проще один раз исправить сам файл и дальше пользоваться им на любом устройстве. Для мобильных проигрывателей порядок обычно тот же: ищите настройку кодировки в разделе субтитров. Иногда помогает также смена шрифта субтитров: если выбранный шрифт не содержит кириллицы, вместо русских букв отображаются пустые квадраты, хотя кодировка выбрана верно. Это отдельная причина, и она лечится настройкой шрифта, а не пересохранением файла.

Исправление файла: пересохранение в UTF-8

Пересохранение подходит для домашнего архива: файл будет одинаково открываться везде, где поддерживается UTF-8. Для работы достаточно обычного текстового редактора, и описание годится для большинства из них.

  1. Сначала сделайте копию файла субтитров. Исходный вариант пригодится, если выбрана неверная кодировка.
  2. Откройте файл в текстовом редакторе, который позволяет выбирать кодировку при открытии. В стандартном Блокноте Windows кодировка выбирается в окне открытия файла, а при сохранении — в окне «Сохранить как».
  3. Откройте файл с предположительной кодировкой (чаще всего Windows-1251) и убедитесь, что русский текст читается.
  4. Выберите «Сохранить как» и укажите кодировку UTF-8. Если в списке есть два варианта, с пометкой BOM и без неё, можно попробовать оба: часть старых проигрывателей лучше работает с одним из них, а современные принимают оба.
  5. Не меняйте расширение файла и оставьте имя таким же, как у видео.

Для большого количества файлов подойдёт пакетное преобразование командами системы или специальными программами, но тогда сначала проверьте результат на одном файле, а уже потом запускайте обработку всей папки.

Если дело не в кодировке

Не все проблемы с субтитрами связаны с таблицей символов. Прежде чем менять кодировку, проверьте другие причины.

  • Субтитры не появляются вовсе. Внешний файл должен лежать рядом с видео и называться так же, отличаться должно только расширение: film.mp4 и film.srt. Часть устройств не подхватывает файл, если имя содержит лишние символы.
  • Текст отображается, но смещён по времени. Это проблема тайминга, а не кодировки. Многие проигрыватели позволяют сдвигать субтитры горячими клавишами, а в редакторах можно сдвинуть весь файл на заданное время.
  • Субтитры встроены в видео картинкой. Графические субтитры редактировать как текст нельзя: они хранятся как изображения, и кодировка к ним не относится.
  • Оформление пропало. Формат ASS допускает шрифты, цвета и положение, а простой SRT хранит почти только текст. При конвертации между ними оформление теряется.

О различиях между контейнерами и дорожками внутри видеофайла рассказывает отдельная страница. А если файл сам не открывается на телевизоре, вероятнее всего причина в кодеке или файловой системе флешки, и порядок проверки вынесен в соседний материал.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
субтитрыкодировкаUTF-8видео

Часто задаваемые вопросы

Читайте также