Як я можу змінити кодування файлу субтитрів?


14

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

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

Підзаголовок чудово працює на VLC, все ідеально. Але що робити, якщо я хочу відредагувати цей підзаголовок якимись грецькими словами? Я моментально отримую помилку щодо кодування символів.

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

Я натискаю спробу, а потім VLC не розпізнає субтитри ...

Відповіді:


16

Для видання / перекладу субтитрів (тобто текстових субтитрів), я настійно пропоную Гауполь .

sudo apt-get install gaupol

Крім цього gaupol, ви можете також спробувати редактор субтитрів та субтитри Gnome .

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

Як виявляється, кодування файлу iconv змінюється на UTF-8, але конвертований файл все одно матиме ті самі символи, які ви бачите під час відкриття в Gedit.

Я знайшов таке рішення:

  1. Відкрийте Gaupol і перейдіть до меню ФайлВідкрити або натисніть кнопку Відкрити .
  2. У нижній частині відкритого вікна є меню вибору під назвою Кодування символів . Клацніть на Інше ... (остання опція).

    Параметр кодування символів у відкритому вікні Гауполя

  3. Виберіть відповідне кодування для вашого файлу, наприклад грецький ISO-8859-7 , і натисніть кнопку Прийняти .

    показати діалогове вікно кодування символів

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

  5. Коли файл субтитрів відкриється у правильному кодуванні символів, перейдіть у меню ФайлЗберегти як ... та змініть параметр кодування символів (знову ж у нижній частині вікна) на UTF-8 та збережіть файл (можливо, за допомогою нове ім’я, для безпеки).

Ця сама процедура додавання кодової сторінки буде працювати для Gedit . Але я залишаю інструкції для Gaupol, оскільки це питання стосується файлів субтитрів.

Удачі.


У мене вже є гауполь, і він показує слова, подібні до моїх скріншотів раніше (нечитатими літерами). І як я вже говорив раніше, якщо я встановлю UTF-8 як нове кодування, VLC не розпізнає субтитри ..
Леон Вітанос

вам доведеться змінити кодування, перш ніж ви зможете редагувати та голити як utf-8
carnendil

Чи можете ви бути трохи більш конкретним? Yoy середнє кодування зміни через save as? Ви маєте на увазі зміни кодування через термінал з "iconv"? Обидва спробували, VLC не розпізнає підзаголовка після цього
Леон Вітанос

Вибачте, мені довелося отримати собі субтитри грецької мови, щоб перевірити. Дійсно, iconvчи змінюється кодування символів, але програма не замінить символи, які відображаються при відкритті як UTF-8. Перевірте мою оновлену відповідь. Ура.
carnendil

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

Відкрийте їх з редактора Kate, ви зможете побачити належний текст, якщо вам все-таки потрібно відкрити їх з Gedit, іншими словами, назавжди змінити кодифікацію, запустіть вищевказану команду терміналу.


iconv, для чого я міг експериментувати, змінить кодування файлу, але не замінить жодного вмісту, тобто лише символи, які збігаються між кодуванням джерела та цілі, візуалізуватимуть правильно, всі інші візуалізуватимуться відповідно до як цільове кодування розуміє їх. Дивіться мою відповідь та їх коментарі.
carnendil

thnks @carnendil, що я сказав, що це змінює кодифікацію, тому що я також грецька (англійська мова не є рідною мовою). реалізувати це в bash-скрипті? я повинен піти на цикл "for do. iconv ... done"?
billybadass

відповідь на це, зауважте, що все-таки доведеться змінити кодування на 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. Встановити enca:

    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 Translator.


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.