Конвертер кодировки субтитров
Или вставьте текст субтитров
Параметры
Это меняет байты, а не субтитры. Каждый символ файла записывается в выбранной кодировке, поэтому плеер или скрипт, требующий одну кодировку, получает читаемый файл. UTF-8 — то, что ожидает всё современное и что этот сайт пишет везде остальном. UTF-8 с BOM — те же байты с трёхбайтовой меткой впереди. UTF-16 LE — это то, что Windows-программы называют Unicode, размер примерно вдвое больше. Windows-1252 — старая западноевропейская кодировка, один байт на символ, и с ней надо быть осторожным: в ней нет места для китайского, японского, корейского, кириллицы, греческого и эмодзи, поэтому каждый невыразимый символ выходит вопросительным знаком и считается в отчёте выше. Больше в файле ничего не меняется.
В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.
Кодировка — это правило, по которому текст файла превращается в байты, и единственное свойство субтитров, которое нельзя увидеть глазами: один и тот же SRT в UTF-8, UTF-16 и Windows-1252 выглядит в редакторе одинаково, а эта страница записывает файл в той кодировке, которую вы назвали, чтобы читающей стороне не приходилось угадывать. В поле по умолчанию стоит UTF-8; если цель не названа, файл уходит в той кодировке, в которой пришёл, — так операция вроде сдвига по времени не переписывает кодировку попутно, и файл, пришедший как UTF-16LE, выходит как UTF-16LE.
Из четырёх вариантов UTF-8 нужен вебу и современным инструментам, «UTF-8 с BOM» — тем же байтам с тремя байтами впереди для программ Windows, UTF-16LE хранит каждый символ двумя байтами и даёт файл примерно вдвое больше, а Windows-1252 — старая западноевропейская кодировка, которая вмещает акценты западноевропейских языков и больше ничего.
Последнее и есть потеря: японские, китайские, кириллические или греческие знаки, которым нет байта в Windows-1252, записываются вопросительными знаками, и отчёт над рабочей областью заранее называет их число по той же таблице, которой пишет кодировщик. Панели могут выглядеть одинаково — кодировка живёт в байтах, а панели держат символы, — и ничего не отправляется на сервер.
Примеры
Английский файл субтитров, записанный как UTF-8
Вход
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Выход
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Значение по умолчанию и кодировка, в которой пишут все остальные страницы сайта. Выход равен входу, потому что UTF-8 у файла и так уже был. Этот случай закрепляет отрицание: выбор кодировки не нормализует в файле ничего другого, поэтому реплика не теряет перевод строки, не получает отметку и не меняет таймкод только потому, что вы открыли эту страницу.
Тот же файл, записанный как UTF-16LE
Вход
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Выход
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Программы субтитров под Windows называют это Unicode, и это кодировка, которая сильнее всего меняет сам файл: каждый символ занимает два байта, впереди появляется отметка, и результат примерно вдвое больше. В панелях этого не видно, потому что они держат символы, — разница видна в размере файла в проводнике и в кодировке в редакторе.
Японские субтитры, записанные как Windows-1252
Вход
1
00:00:01,000 --> 00:00:02,000
こんにちは
Выход
1
00:00:01,000 --> 00:00:02,000
こんにちは
Пять знаков каны и кодировка, в которой для них нет места, поэтому отчёт об этой операции насчитывает пять символов, которые станут вопросительными знаками. Панели по-прежнему показывают кану, потому что замена происходит при записи файла, а не при чтении. Это разделение намеренное: вы видите, что говорит файл, и в отчёте — чем вы платите за такую запись.
Частые вопросы
Чем кодировка файла субтитров отличается от его формата?
Формат определяет, как файл организует номера реплик, таймкоды и текст, — SRT, WebVTT, ASS и так далее, — и его можно прочитать глазами. Кодировка определяет, как эти символы превращаются в байты, и она невидима: один и тот же SRT может быть сохранён в UTF-8, UTF-16 или Windows-1252 и выглядеть во всех редакторах одинаково. Эта страница меняет второе и не трогает первое, а страницы конвертации меняют первое.
Что происходит со знаками, которые целевая кодировка не вмещает?
Они записываются вопросительными знаками, и страница называет их число до скачивания. Windows-1252 покрывает западноевропейские буквы и не имеет байта для китайского, японского, корейского, кириллицы, греческого и эмодзи, поэтому такие знаки не переживут её ни в каком виде: ошибки не будет, и замены, сохраняющей смысл, тоже. Число в отчёте — это число вопросительных знаков в файле, который вы получите, и считается оно по той же таблице, которой пользуется запись.
Почему панели выглядят одинаково при смене кодировки субтитров?
Потому что панели держат символы, а выбор касается байтов. Текст есть текст; то, сколько байтов занимает каждый символ — один, два или три, — решается при записи файла, то есть в момент скачивания. Строка очереди называет кодировку, в которой файл был прочитан, и добавляет вторую пометку, когда кодировка записи отличается, а собственный редактор покажет кодировку сохранённого файла.
Какую кодировку выбрать для сдачи субтитров?
UTF-8, если в спецификации не сказано иное, а спецификация обычно говорит. Windows-1252 часто встречается в европейских вещательных поставках и безопасна только для западноевропейского текста; UTF-16LE может требовать инструмент, работающий только под Windows. Если файл уже был в подходящей кодировке, значение по умолчанию сохраняет её — это самый безопасный ответ, когда ничего не сломалось.
Станет ли файл субтитров вдвое больше в UTF-16?
Да, примерно. Каждый символ хранится двумя байтами, поэтому английский файл субтитров в 20 КБ превращается примерно в 40 КБ, а последующее сжатие убирает большую часть этой разницы. Отметка впереди добавляет ещё два байта. Размер — плата за свойство, из-за которого UTF-16 был распространён в Windows: каждый символ одной ширины, и старому программному обеспечению так было проще.
Почему в списке кодировок нет UTF-16 big endian?
Потому что её никто не выбирает, а файлы, которые уже в ней, всё равно обрабатываются правильно. Файл, пришедший как UTF-16 big endian, при значении по умолчанию записывается обратно как UTF-16 big endian: сохранение входной кодировки — это то, что страница делает, когда цель не названа. В списке четыре цели, которые действительно спрашивают, а сам кодировщик умеет и big endian, чтобы сохранение файла в исходном виде никогда не меняло его молча.