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

14

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

введите описание изображения здесь

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

введите описание изображения здесь

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

Леон Витанос
источник

Ответы:

16

Для издания / перевода субтитров (то есть текстовых субтитров) я настоятельно рекомендую 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, поскольку этот вопрос касается файлов субтитров.

Удачи.

carnendil
источник
У меня уже есть гауполь, и он показывает такие слова, как мои скриншоты раньше (нечитаемыми буквами). И, как я уже говорил, если я установлю UTF-8 в качестве новой кодировки, VLC не распознает субтитры ..
Леон Витанос,
вам придется изменить кодировку, прежде чем вы сможете редактировать и брить как utf-8
carnendil
Не могли бы вы быть более конкретным? Yoy означает изменить кодировку через сохранить как? Вы имеете в виду изменить кодирование через терминал с помощью «iconv»? Оба попробовали, VLC не распознает субтитры после этого
Леон Витанос
Извините, я должен был получить некоторые греческие субтитры, чтобы проверить. Действительно, iconvизменяется кодировка символов, но программа не будет заменять символы, которые отображаются при открытии как UTF-8. Пожалуйста, проверьте мой обновленный ответ. Приветствия.
Карнендил
4
iconv -f ISO-8859-7 -t UTF-8  Input_file.srt   > Output_file.srt  

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

billybadass
источник
iconvдля того, что я смог поэкспериментировать, изменит кодировку файла, но не заменит какое-либо содержимое, то есть только символы, совпадающие между исходной и целевой кодировками, будут отображаться правильно, все остальные будут отображаться согласно как целевая кодировка понимает их. Смотрите мой ответ и их комментарии.
Карнендил
thnks @carnendil то, что я сказал, это то, что это изменяет кодификацию, потому что я тоже грек (английский, а не родной язык), очевидно, я имел в виду кодирование и только в выходном файле вход по-прежнему находится в каталоге, но вы можете быть достаточно любезны, чтобы реализовать это в скрипте bash? я должен пойти для цикла "для do. iconv ... done"?
Биллибадас
что-то типа ответа, обратите внимание, что все равно придется изменить кодировку на utf-8 из настроек видеоплеера #! / bin / bash для файла в * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ file" && mv -f "$ file.new" "$ file" сделано
billybadass
3

Я бы порекомендовал 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>
    

    Это должно делать свое дело.

Стан
источник
1

Проблема в том, что Gedit (и многие другие приложения linux) неправильно распознают кодировку текста. С другой стороны, VLC, скорее всего, настроен на его правильное распознавание (через вкладку «Настройки субтитров»), и поэтому у вас нет никаких проблем. Решение простое:

Вы не открываете файл, дважды щелкнув по нему, но через диалоговое окно «Открыть» Gedit . Там внизу слева вы можете найти a drop-down for Encoding, в котором «Автоматически обнаружен» выбран по умолчанию. Установите для него «Windows-1253» или «ISO-8859-7», и все готово, файл открывается правильно (и вы можете сохранить его в UTF-8, чтобы избежать проблем в будущем)

Giorgos_tph
источник
0

Aegisub - это еще один редактор субтитров, который позволяет конвертировать в различные форматы (и поставляется с множеством функций) . Его родной формат (.ass) поддерживается VLC Media Player, а также MPlayer, и его преобразование должно решить проблемы с кодировкой.

LiveWireBT
источник
0

Для перевода файлов SRT вы также можете использовать DualSub . Это с открытым исходным кодом (GPLv3) и кроссплатформенный. Он использует Google Переводчик.

Бони Гарсия
источник
0

Для общей информации, теперь есть subtitle-index.org , он концентрирует множество субтитров, ранжирует их по нескольким критериям (длительность, проверка орфографии, доступность, кодирование) и предлагает лучший из них для прямой загрузки в формате UTF-8.

Работая довольно хорошо, это позволяет избежать проблем с кодированием, которые являются довольно общими и раздражающими.

классная штука
источник
0

Это функция 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')
Мойтаба Ходадади
источник