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


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, поскольку этот вопрос касается файлов субтитров.

Удачи.


У меня уже есть гауполь, и он показывает такие слова, как мои скриншоты раньше (нечитаемыми буквами). И, как я уже говорил, если я установлю 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, другими словами, навсегда изменить кодификацию, запустите указанную выше команду терминала.


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, чтобы избежать проблем в будущем)


0

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


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')
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.