Как я могу изменить кодировку файла субтитров?
Я загрузил греческий субтитр для фильма, и это то, что я вижу, когда открываю его с помощью Gedit.
Субтитры прекрасно работают на VLC, все отлично. Но что, если я захочу отредактировать этот подзаголовок несколькими греческими словами? Я сразу же получаю ошибку о кодировке символов.
Я нажимаю "повторить", а затем VLC не распознает субтитры...
8 ответов
Для издания / перевода субтитров (то есть текстовых субтитров) я настоятельно рекомендую Gaupol.
sudo apt-get install gaupol
Кроме gaupol
Вы также можете попробовать Subtitle Editor и Gnome Subtitles.
Однако из скриншотов видно, что ваш .srt
файл не закодирован в Unicode.
Как выясняется, iconv
действительно изменяет кодировку файла на UTF-8, но преобразованный файл будет по-прежнему иметь те же символы, которые вы видите при открытии в Gedit.
Решение, которое я нашел, состоит в следующем:
- Откройте Gaupol и перейдите в меню Файл → Открыть или нажмите кнопку Открыть.
В нижней части открытого окна есть меню выбора, озаглавленное Кодировка символов. Нажмите на Другое... (последний вариант).
Выберите подходящую кодировку для вашего файла, например греческий ISO-8859-7, и нажмите кнопку " Принять".
Теперь открой свой
.srt
файл и убедитесь, что все символы правильно отображаются. В противном случае повторите вышеописанную процедуру с другой кодировкой. Вы можете запустить командуfile -bi yourfile.srt
чтобы определить правильную кодировку вашего файла (хотя я прочитал результаты не обязательно точны).- Открыв файл субтитров в правильной кодировке символов, перейдите в меню " Файл" → " Сохранить как..." и измените параметр кодировки символов (снова в нижней части окна) на UTF-8 и сохраните файл (возможно, с новое имя, для безопасности).
Эта же процедура добавления кодовой страницы будет работать для Gedit. Тем не менее, я оставляю инструкции для Gaupol, поскольку этот вопрос касается файлов субтитров.
Удачи.
iconv -f ISO-8859-7 -t UTF-8 Input_file.srt > Output_file.srt
Откройте их в редакторе Kate, вы можете увидеть правильный текст, если вам все еще нужно открыть их из Gedit, другими словами, навсегда изменить кодификацию, запустите указанную выше команду терминала.
Я бы порекомендовал enca
, В отличие от gaupol, вы можете обрабатывать не только файлы субтитров, но и любой текстовый файл.
Установите энка:
sudo apt-get install enca
Чтобы выяснить кодировку файла, посмотрите, может ли enca его угадать:
enca <file>
или, если это не удается, и вы знаете язык текстового файла, чем запустить, например,
enca -L ru <file>
и посмотрим, что это тебе даст. Получить список поддерживаемых языков от
man enca
,Я бы порекомендовал конвертировать в UTF-8, вы можете сделать это, запустив
enconv -x utf8 <file>
или, опять же, если
enca
не могу угадать язык поenconv -L ru -x utf8 <file>
Это должно делать свое дело.
Проблема в том, что Gedit (и многие другие приложения linux) неправильно распознают кодировку текста. С другой стороны, VLC, скорее всего, настроен на его правильное распознавание (через вкладку "Настройки субтитров"), и поэтому у вас нет никаких проблем. Решение простое:
Вы не открываете файл, дважды щелкнув по нему, но через диалоговое окно "Открыть" Gedit. Там вы можете найти в нижней левой части drop-down for Encoding
, в котором "Автоматически обнаружен" выбран по умолчанию. Установите для него "Windows-1253" или "ISO-8859-7", и все готово, файл открывается правильно (и вы можете сохранить его в UTF-8, чтобы избежать проблем в будущем)
Для вашей общей информации, теперь есть http://subtitle-index.org/, он концентрирует множество субтитров, ранжирует их по нескольким критериям (длительность, проверка орфографии, доступность, кодирование) и предлагает лучший из них при прямой загрузке как UTF-8.
Работая довольно хорошо, он позволяет избежать проблем с кодированием, которые являются довольно общими и раздражающими.
Aegisub- еще один редактор субтитров, который позволяет конвертировать в различные форматы (и поставляется с множеством функций). Его собственный формат (.ass) поддерживается VLC Media Player, а также MPlayer, и его преобразование должно исправить проблемы с кодировкой.
Вам понадобится только Excel, чтобы исправить это. Это довольно просто, просто выполните следующие несколько шагов:
Откройте новый лист Excel. Перейдите в "Данные", "Получить внешние данные", "Из текста" и выберите файл с субтитрами. Возможно, вам придется искать "все файлы" вместо того, чтобы оставлять только ".txt".
Затем вы можете выбрать правильную кодировку в следующем окне. Попробуйте большинство из них и просмотрите результат. Обратите внимание на 2 вещи:
- удалите все разделители, чтобы текст оставался единым
- поместите "формат данных столбца в" текст " (в противном случае Excel может принять знак минус для формулы)
- импортировать данные из понравившейся ячейки (A1, конечно, в порядке).
Ваш текст отлично закодирован в Excel. Вам просто нужно скопировать / вставить все это в новый файл.srt.
Для перевода файлов SRT вы также можете использовать DualSub. Это открытый код (GPLv3) и кроссплатформенный. Он использует Google Переводчик.
Это функция Python3 для преобразования любых текстовых файлов, включая субтитры, в файлы с кодировкой UTF-8.
def correctSubtitleEncoding(filename, newFilename, encoding_from='ISO-8859-7', encoding_to='UTF-8'):
with open(filename, 'r', encoding=encoding_from) as fr:
with open(newFilename, 'w', encoding=encoding_to) as fw:
for line in fr:
fw.write(line[:-1]+'\r\n')