Перейти до основного вмісту
SubtitleMatrix

Змінити закінчення рядків

Текст і оформленняВиправлення кодування та BOM
Або вставте текст субтитрів

Параметри

Кожен рядок файлу закінчується або одним невидимим символом (LF), або двома (CRLF). Плеєри, редактори й інструменти субтитрів читають обидва, тож це майже ніколи не причина того, що файл субтитрів поводиться неправильно — дві причини, чому це все ж так: складальний конвеєр або строгий парсер, що відкидає інший варіант, і інструмент порівняння, що показує кожен рядок зміненим через різні закінчення. LF тут за замовчуванням, бо його використовують Unix, macOS і веб, і бо файл, що вже має його, не чіпається. Вибір CRLF перетворює обидва види наявних закінчень, тож змішаний файл виходить однорідним.

У якій частоті кадрів пораховано таймінги. На сторінках форматів це те, що потрібно MicroDVD, бо він зберігає час як номери кадрів. На сторінках частоти кадрів це частота, за якою файл синхронізували — версія, для якої робили субтитри, — а друге поле сторінки приймає частоту відео, з яким ви будете їх використовувати. 23,976, 24, 25, 29,97, 30, 50, 59,94 і 60 — найпоширеніші. Помилка зміщує весь таймлайн, а на сторінках частоти кадрів — на відношення, а не на фіксовану величину.

Закінчення рядка — це символ або пара символів, що завершує рядок, і у звичайному вжитку їх два. Системи Unix завершують рядок одним символом LF; Windows — двома, CR, а потім LF. Обидва виглядають на екрані однаково, і обидва плеєри субтитрів читають однаково, тому ця різниця лишається невидимою, доки вона не почне важити для чогось далі.

Що важить: контроль версій, де кожен рядок файлу може виглядати зміненим через зміну закінчень; скрипти збірки й конвеєри, що відрізають останній символ рядка й лишаються із зайвим поверненням каретки, коли чекали нового рядка; інструменти, що ділять файл за LF і отримують повернення каретки, приклеєне до останнього поля; і будь-яка специфікація здачі, що називає одне з двох. Файл субтитрів, який треба порівняти з іншим або з’єднати з іншим, — це файл, чиї закінчення рядків є частиною його інтерфейсу.

Сторінка навмисно однакова щодо того, що виробляє. Файл зі змішаними закінченнями — частина рядків CRLF, бо його редагували у Windows, частина LF, бо його редагували будь-де інде, — виходить цілком у вибраному вами стилі, бо сторінка спершу нормалізує закінчення до LF, а потім застосовує ваш вибір. Це не те саме, що конвертувати вже правильні закінчення й лишити решту: це означає, що відповідь на питання «який стиль у цього файлу» перестає залежати від того, на який рядок ви дивитеся, — а це єдина версія відповіді, корисна для скрипта.

Голе повернення каретки, закінчення рядка Mac до OS X, обробляється разом з усім іншим. Його вже ніхто не вибирає, але файли з ним ще трапляються, і файл, чиї рядки закінчуються так, для кожного інструмента, що шукає лише LF, є одним рядком. Нормалізація спершу означає, що ці файли виходять правильними, а не одним величезним субтитром.

Дві панелі на цій сторінці — єдине місце в родині, де різницю видно безпосередньо: закінчення рядка — справжній символ, і файл із рядками, що виглядають подвійно розставленими в переглядачі, який їх не ховає, — це файл із CRLF. Приймаються всі дванадцять форматів, бо закінчення рядка — властивість тексту, а не формату субтитрів; звичайний транскрипт теж має рядки. Нічого не завантажується, і файл читається, змінюється й записується у вашому браузері.

Приклади

Перетворення файлу Unix на закінчення Windows

Вхід

1
00:00:01,000 --> 00:00:02,000
The room is dark.

2
00:00:03,000 --> 00:00:04,000
A cold night.

Результат

1
00:00:01,000 --> 00:00:02,000
The room is dark.

2
00:00:03,000 --> 00:00:04,000
A cold night.

Кожне закінчення рядка стає двома символами, включно з порожнім рядком між репліками: той порожній рядок теж рядок, і конвертація, що його пропустила б, лишила б файл, чий розділювач реплік і далі голе LF. Очікуваний текст виписує закінчення парами CR LF, щоб кількість можна було прочитати просто з нього, а більше у файлі ніщо не зрушило.

Перетворення файлу Windows назад на закінчення Unix

Вхід

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.

Напрямок із видимим наслідком. Файл, що зберігає зайве повернення каретки, у деяких редакторах показується як такий, що має порожній рядок після кожного рядка, а в конвеєрі оболонки — як повернення каретки, приклеєне до кінця останнього поля. Відео, таймкоди й текст в обох файлах ідентичні; різниця — символ у кінці кожного рядка, і саме цей напрямок його прибирає.

Файл, редагований на двох машинах, зроблено однаковим

Вхід

1
00:00:01,000 --> 00:00:02,000
Mixed endings.

2
00:00:03,000 --> 00:00:04,000
Second.

Результат

1
00:00:01,000 --> 00:00:02,000
Mixed endings.

2
00:00:03,000 --> 00:00:04,000
Second.

Той самий файл, змінений на двох машинах: частина рядків закінчується CRLF, частина LF, а один розділювач реплік записаний обома способами. Вихід однаковий, і в цьому суть — файл більше не означає різного залежно від того, який рядок ви читаєте. Наївний пошук із заміною помиляється в цьому випадку в обидва боки: в одному лишає рядки LF без змін, в іншому дає подвоєне повернення каретки.

Часті запитання

Як побачити, які закінчення рядків використовує файл субтитрів?

У більшості редакторів стиль закінчення показано в рядку стану як LF, CRLF або суміш. З оболонки файл із закінченнями CRLF показує повернення каретки в кінці кожного рядка, якщо дивитися інструментом, що робить керівні символи видимими. Прямий тест — подивитися на байти в кінці рядка: один 0A — це LF, а пара 0D 0A — CRLF.

Що сторінка робить із файлом субтитрів зі змішаними закінченнями?

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

Чи змінюють закінчення рядків таймкоди субтитрів або текст реплік?

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

Мені конвертувати закінчення субтитрів у LF чи в CRLF?

У LF, якщо щось перед вами не називає CRLF. Це те, що очікують інструменти Unix, більшість конвеєрів збірки й специфікація WebVTT, і це робить файл на один байт коротшим на рядок. Вибирайте CRLF, коли цього просить специфікація здачі або інструмент, що працює лише під Windows, і пам’ятайте, що вибір стосується файлу, а не всього проєкту: файл субтитрів, який здають окремо, може відрізнятися від решти.

Чому конвертація в CRLF змінює й порожній рядок між субтитрами?

Бо той порожній рядок — це рядок, і його закінчення таке саме закінчення рядка, як будь-яке інше. SRT розділяє репліки порожнім рядком, тому файл, конвертований у CRLF, чий розділювач реплік лишився голим LF, мав би посеред однакового файлу одне закінчення іншого виду — саме ту суміш, яку ця сторінка й існує, щоб прибрати. Те саме стосується останнього рядка файлу.

Чи конвертуються старі повернення каретки Mac?

Так. Файл, чиї рядки закінчуються голим поверненням каретки, стилем Mac OS до OS X, нормалізується разом з усім іншим, тому виходить у вибраному вами стилі, а не лишається одним довгим субтитром. На панелі немає варіанта CR, бо файлів так уже ніхто не пише, але файли, що вже такі, читаються й переписуються правильно.

Споріднені інструменти