字幕に BOM を追加
字幕テキストを貼り付けることもできます
オプション
BOM はファイルの先頭にある3バイトで、どの文字コードかを示します。どのエディタやプレーヤーでも見えず、画面の場所も取らず、付けても外しても字幕の中身は変わりません。BOM を気にするツールは2種類あります。字幕を書き出す Windows のプログラム(既定で付けます)と、ビルド処理の厳格なパーサー(BOM で始まるファイルを拒否します)です。このページはタイトルが示す状態で欄を開くので、ファイルが逆だった場合は切り替えられます。UTF-16 のファイルは常に BOM を持ちます。どちらのバイト順かを読み手が知る手段だからです。外すよう指定してもそのまま残ります。
タイミングを数える基準のフレームレートです。形式のページでは MicroDVD が必要とする値で、同形式は時間をフレーム番号で保存します。フレームレートのページでは、そのファイルがどのレートを前提に作られたか(字幕が合わせて作られた版)を指し、ページの2つ目の欄には実際に使う動画のレートを入れます。よく使われるのは 23.976、24、25、29.97、30、50、59.94、60 です。間違えると時間軸全体がずれます。フレームレートのページでは、ずれは固定量ではなく比率で生じます。
バイトオーダーマーク(BOM)は 1 文字、U+FEFF で、ファイルのほかのすべての前に置かれます。UTF-8 では 3 バイトの EF BB BF で、読み手が最初に見るものです。このページの出力は見た目では何も変わりません。同じ字幕、同じタイムコード、同じ改行で、その最初の前に 1 つの印が付くだけです。
これが欲しくなるのは、この印がファイルに「私は UTF-8 です」と言わせる方法だからです。字幕ファイルを開くプログラムは、どの文字コードかを推測する必要があり、その多く(古い Windows のプレーヤー、ディスクオーサリングツール、最初の行を読むスクリプト)はファイル全体を解析するのではなく、先頭のバイトを見て決めます。印があれば、アクセント付きの名前、曲がった引用符、ギリシャ文字がそのまま出ます。印がなければ、同じファイルがシステムのローカルコードページとして読まれ、それらの文字はまったく別のものになります。
もう 1 つの方向は、多くの人が先に遭遇するほうです。印を持つファイルを、印を想定していないツールで開く場合です。そのツールは 3 バイトを 3 文字として読み、最初の行の先頭に表示します。字幕ファイルの先頭に出る小さな記号の塊はここから来ています。それが見えているなら、このページは逆で、印は付けるのではなく外す必要があります。外すページは下にリンクしています。
このページがしないのは、途中でファイルを整形し直すことです。CRLF の改行、字幕番号、タイミング、どの字幕のテキストにも触れず、ファイルの文字コードを代わりに決めることもありません。UTF-8 でないファイルは別の問題で、そのページもあります。するのは先頭に 1 文字を足すことだけで、すでにその文字があれば 2 つ目を足さずにファイルをそのまま返します。そのため 2 回実行しても 1 回と同じファイルになります。
印はダウンロードするファイルに付きます。このページの 2 つの表示欄は目には同じに見えます。見えない文字はまさに見えない文字の見た目だからです。結果を確かめる正直な方法は、16 進ビューアで最初の 3 バイトを見るか、エディタのステータスバーで文字コードを見ることです。このサイトが扱う 12 形式はすべて印を持てます。印はファイルの先頭バイトの性質で、字幕について何も知らないからです。どこにもアップロードされず、ファイルはブラウザの中で読まれ、変更され、書き出されます。
例
印を前に付けた ASCII の字幕ファイル
入力
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.
期待されるテキストは見えない文字から始まります。最初の字幕番号の 1 の前に、U+FEFF、3 バイトの EF BB BF です。2 つの表示欄は同じに見えますが、描画の不具合ではありません。違いは 3 バイトで、どのバイトにも形がないからです。結果をダウンロードし、文字コードを表示するエディタか 16 進ビューアで最初のバイトを見れば、すぐに分かります。
印を足し、改行はそのままにした Windows のファイル
入力
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 の字幕ツールが書くものは印と CRLF 改行の 2 つで、よく混同されますが別物です。このページが書くのは前者だけです。期待されるファイルの復帰文字はすべて入力のもので、その前に印が付きます。改行まで書き換えるページは、渡されたすべてのファイルを黙って整形し直すことになり、下流のツールが気にするまで誰も気づかない類の変更です。
すでに印を持つファイル
入力
1
00:00:01,000 --> 00:00:02,000
Already marked.
出力
1
00:00:01,000 --> 00:00:02,000
Already marked.
入力にはすでに印があるため、出力は入力そのままで、印はちょうど 1 つです。印を足す前に既存の印を外さない素朴な実装は、印が 2 つあるファイルを作ります。二重の印はどのエディタでも見えませんが、先頭バイトを読むものにとっては別のファイルです。印のあるファイルにこのページを実行することは、何も考えずにできるべきです。
よくある質問
字幕ファイルに BOM を付けると、実際には何が変わりますか?
ファイルの先頭に 1 文字、U+FEFF が加わり、UTF-8 では 3 バイトの EF BB BF として書かれます。字幕は増えも減りも編集もされず、タイムコードは動かず、字幕番号と改行はそのまま出てきて、各行のテキストも変わりません。2 つのファイルを比較すると、違うのは最初の 1 行だけで、その先頭 3 バイトが異なります。
BOM を付けるページの 2 つの表示欄が同じに見えるのはなぜですか?
加わる文字に形がないからです。U+FEFF は幅 0 の改行禁止スペースなので、プレーヤーと同じようにテキストを描画する表示欄では前後が見た目で同じになります。変更は実際にあり、ダウンロードするファイルに入っています。違いは先頭 3 バイトです。テキストではなく、エディタの文字コード表示か、先頭に EF BB BF が見える 16 進ビューアで確かめてください。
BOM を付ける処理を同じファイルに 2 回実行しても大丈夫ですか?
大丈夫です。このページは自分の印を書く前に既にある印を取り除くので、すでに印を持つファイルは変わらずに戻り、印のないファイルにはちょうど 1 つ付きます。2 回実行しても 1 回と同じファイルになります。このページを通した後、別のツールが 2 つ目の印を付けてしまったファイルも、もう一度通せば 1 つだけが残るので片付けられます。
この後で字幕ファイルを別の形式に変換すると、印は残りますか?
このサイトの変換ページは印なしの素の UTF-8 を書くため、形式を変えると引き継がれません。作業の順序は、先に変換し、納品前の最後の手順として印を付けてください。一般にもその順序のほうが理にかなっています。印は字幕の中身ではなく完成したファイルの性質だからです。
字幕ファイルに印を付けると改行は変わりますか?
変わりません。印はファイルの最初のバイトの前に置かれる 1 文字で、後ろには影響しません。CRLF だらけの Windows ファイルは CRLF のままで、Unix のファイルは LF のままで、改行が混在したファイルは同じ混在のまま出てきます。改行を変えるのは別のページで、1 つのページが両方を黙って行うのはよい考えではありません。
どの字幕形式に BOM を付けられますか?
このサイトが扱う 12 形式すべてです。SRT、WebVTT、ASS、SSA、SBV、SAMI、LRC、MicroDVD、TTML、JSON、CSV に対応します。印は字幕形式ではなくファイルの先頭バイトに関するものなので、形式ごとに合わせることは何もありません。タイムラインをまったく持たないプレーンテキストの文字起こしにも付けられます。