Я загрузил греческий субтитр для фильма, и это то, что я вижу, когда открываю его с помощью Gedit.
Субтитры прекрасно работают на VLC, все идеально. Но что, если я захочу отредактировать этот подзаголовок несколькими греческими словами? Я сразу же получаю ошибку о кодировке символов.
Я нажимаю кнопку «Повторить», а затем VLC не распознает субтитры ...
Для издания / перевода субтитров (то есть текстовых субтитров) я настоятельно рекомендую Gaupol .
sudo apt-get install gaupol
Помимо gaupol
, вы также можете попробовать Subtitle Editor и Gnome Subtitles .
Однако из скриншотов видно, что ваш файл .srt
не не закодирован в Unicode.
Как оказалось, iconv
действительно изменяет кодировку файла на UTF-8, но преобразованный файл все равно будет иметь те же символы, которые вы видите при открытии в Gedit.
Решение, которое я нашел, это:
В нижней части открытого окна есть меню выбора под названием Кодировка символов . Нажмите на Другие ... (последний вариант).
Выберите подходящую кодировку для вашего файла, например, Греческий ISO-8859-7 , и нажмите на кнопку Принять .
Теперь откройте файл .srt
и убедитесь, что все символы правильно отрисованы. В противном случае повторите вышеописанную процедуру с другой кодировкой. Вы можете запустить команду file -bi yourfile.srt
, чтобы определить правильную кодировку вашего файла (хотя я читал, что результаты не обязательно точны).
Эта же процедура добавления кодовой страницы будет работать для Gedit . И все же я оставляю инструкции для Gaupol, поскольку этот вопрос касается файлов субтитров.
Удачи.
iconv -f ISO-8859-7 -t UTF-8 Input_file.srt > Output_file.srt
Откройте их в редакторе Kate, вы можете увидеть правильный текст, если вам все еще нужно открыть их из Gedit, другими словами, навсегда изменить кодификацию, запустите указанную выше терминальную команду.
Я рекомендовал бы enca
. В отличие от gaupol, можно обработать не только файлы подзаголовка, но и любой текстовый файл.
Установка enca:
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>
это должно добиться цели.
Для перевода файлов SRT вы также можете использовать DualSub . Это открытый код (GPLv3) и кроссплатформенный. Он использует Google Переводчик.
Проблема в том, что Gedit (и многие другие приложения linux) не распознают правильно кодировку текста. С другой стороны, VLC, скорее всего, настроен на его правильное распознавание (через вкладку «Настройки субтитров»), и поэтому у вас нет никаких проблем. Решение простое:
Файл открывается не по двойному щелчку, а через диалоговое окно «Открыть» в Gedit . Там, внизу слева, вы можете найти drop-down for Encoding
, в котором по умолчанию выбран «Обнаружен автоматически». Установите для него «Windows-1253» или «ISO-8859-7», и все готово, файл открывается правильно (и вы можете сохранить его в UTF-8, чтобы избежать проблем в будущем)
Другим редактором субтитров, который позволяет конвертировать в различные форматы (и поставляется с множеством функций), является Aegisub . Его родной формат (.ass) поддерживается VLC Media Player, а также MPlayer, и его преобразование должно решить проблемы с кодировкой.
Для общей информации, теперь есть subtitle-index.org , он концентрирует много субтитров, ранжирует их по нескольким критериям (длительность, проверка орфографии, доступность, кодирование) и предлагает лучшие один в прямой загрузке как UTF-8.
Работая довольно хорошо, это позволяет избежать проблем с кодированием, которые являются довольно общими и раздражающими.
Это функция 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')
Чтобы это исправить, вам понадобится только Excel. Это довольно просто, выполните следующие несколько шагов:
Откройте новый лист Excel. Перейдите в «Данные», «Получить внешние данные», «Из текста» и выберите файл субтитров. Возможно, вам придется искать «все файлы», а не оставлять только «.txt».
Затем вы можете выбрать правильную кодировку в следующем окне. Попробуйте большинство из них и просмотрите результат. Вам нужно будет обратить внимание на 2 вещи:
Ваш текст отлично закодирован в Excel. Вам просто нужно скопировать/вставить все это в новый файл .srt.