Как я могу изменить кодировку файла субтитров?

Я загрузил греческий субтитр для фильма, и это то, что я вижу, когда открываю его с помощью Gedit.

введите описание здесь

Субтитры прекрасно работают на VLC, все отлично. Но что, если я захочу отредактировать этот подзаголовок несколькими греческими словами? Я сразу же получаю ошибку о кодировке символов.

введите описание здесь

Я нажимаю "повторить", а затем VLC не распознает субтитры...

8 ответов

Для издания / перевода субтитров (то есть текстовых субтитров) я настоятельно рекомендую Gaupol.

sudo apt-get install gaupol

Кроме gaupolВы также можете попробовать Subtitle Editor и Gnome Subtitles.

Однако из скриншотов видно, что ваш .srt файл не закодирован в Unicode.

Как выясняется, iconv действительно изменяет кодировку файла на UTF-8, но преобразованный файл будет по-прежнему иметь те же символы, которые вы видите при открытии в Gedit.

Решение, которое я нашел, состоит в следующем:

  1. Откройте Gaupol и перейдите в меню ФайлОткрыть или нажмите кнопку Открыть.
  2. В нижней части открытого окна есть меню выбора, озаглавленное Кодировка символов. Нажмите на Другое... (последний вариант).

    Возможность кодировки символов в открытом окне Gaupol

  3. Выберите подходящую кодировку для вашего файла, например греческий ISO-8859-7, и нажмите кнопку " Принять".

    показать диалоговое окно кодировки символов

  4. Теперь открой свой .srt файл и убедитесь, что все символы правильно отображаются. В противном случае повторите вышеописанную процедуру с другой кодировкой. Вы можете запустить команду file -bi yourfile.srt чтобы определить правильную кодировку вашего файла (хотя я прочитал результаты не обязательно точны).

  5. Открыв файл субтитров в правильной кодировке символов, перейдите в меню " Файл" → " Сохранить как..." и измените параметр кодировки символов (снова в нижней части окна) на UTF-8 и сохраните файл (возможно, с новое имя, для безопасности).

Эта же процедура добавления кодовой страницы будет работать для Gedit. Тем не менее, я оставляю инструкции для Gaupol, поскольку этот вопрос касается файлов субтитров.

Удачи.

iconv -f ISO-8859-7 -t UTF-8  Input_file.srt   > Output_file.srt  

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

Я бы порекомендовал enca, В отличие от gaupol, вы можете обрабатывать не только файлы субтитров, но и любой текстовый файл.

  1. Установите энка:

    sudo apt-get install enca
    
  2. Чтобы выяснить кодировку файла, посмотрите, может ли enca его угадать:

    enca <file>
    

    или, если это не удается, и вы знаете язык текстового файла, чем запустить, например,

    enca -L ru <file>
    

    и посмотрим, что это тебе даст. Получить список поддерживаемых языков от man enca,

  3. Я бы порекомендовал конвертировать в 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')
Другие вопросы по тегам