字幕の文字化けはなぜ起こる?

字幕があるプレーヤーで■や?、意味不明な記号の羅列になったとき、多くの人は「ファイルが壊れた」と直感します。実際にはほとんどの場合、ファイルは壊れておらず、文字コード・改行コード・ファイル先頭のマークのいずれかがプレーヤーと噛み合っていないだけです。以下の順で調査すれば通常は原因を特定でき、各段階に明確な判断基準があるので当てずっぽうにはなりません。

SRTの表示異常を招く汚データの典型的な発生源
字幕の文字化けは、文字コード不一致・WindowsとUnixの改行コード差異・ファイル先頭のBOMマークの三系統が主因で、ファイル自体の破損ではありません

まず切り分ける:文字化けか、形式不良か

文字が■や?、歪んだ記号になるが、行数と構造は保たれている——これは文字コードの問題で、本記事が扱うものです。連番とタイムコードが食い違う、字幕がまとめて飛ぶといった全行ずれなら、形式かタイムコードの問題で、字幕規格チェックツール か 字幕クリーンアップツール で処理します。まず二類型に分けないと、調査の方向が逸れます。

ステップ1:文字コードの確認——UTF-8(BOMなし)を優先

最近のプレーヤーやプラットフォームの大半は既定でUTF-8として読みます。ファイルがGBKやBOM付きUTF-8だと、古いプレーヤーでは誤表示になります。

エディタで「UTF-8(BOMなし)」として保存し直します。メモ帳なら保存ダイアログの文字コードで「UTF-8」を選び、「UTF-8 with BOM」は選ばないこと。中国語・日本語・韓国語の字幕はとりわけUTF-8である必要があり、そうでなければ文字化けは確定します。現在の文字コードが分からなければ、文字コード判定機能のあるエディタ(VS Codeなど)で開けば、ステータスバーに実際の文字コードが表示されます。それを基に保存し直してください。変換後にプレーヤーで開き直し、■が消えたか確認します。

判断基準:ファイル全体が一斉に■や文字化けになる(一部の文字だけではない)なら、ほぼ文字コード違いです。中国語だけが■になり英語は正常なら、中国語の文字コードが認識されていない——これも文字コードの問題で、改行ではありません。SmileSubが書き出す字幕は既定でUTF-8なので、プラットフォームをまたいでも安全です。SRTの標準的な書き方は バイリンガルSRT形式の解説 を参照してください。

ステップ2:改行コードの確認

WindowsはCRLF(\r\n)、UnixとmacOSはLF(\n)を使います。ごく一部の古いツールは片方しか受け付けず、改行が合わないと行がくっつきます。

エディタで不可視文字の表示を切り替え、改行がLFかCRLFかを確認し、対象プラットフォームが求める側に統一します——通常はLFのほうが無難です。保存して字幕を読み込み直します。

判断基準:字幕の行同士が分かれなくなり、塊になってくっつくなら、文字コードではなく改行コードの問題である可能性が高いです。

ステップ3:ファイル先頭のBOM

BOMはファイル先頭にある数バイトの不可視データで、文字コードの目印です。大半のツールは無視しますが、一部のプレーヤーはBOMを本文として表示し、意味不明な文字列が頭に出ます。

十六進ビューか「UTF-8(BOMなし)として保存」で取り除きます。除去後に最初の字幕の前の怪しい文字列が消えれば、BOMが原因と確定です。以降の書き出しはBOMなしに統一すれば、二度と起きません。

判断基準:最初の字幕の前にだけ怪しい文字が数個付き、以降は正常——ほぼBOMの仕業です。

修復と予防

調査の順序は固定です。文字コード → 改行コード → BOM。外側から解決し、ファイル先頭は最後です。OS間コピー(WindowsとmacOSの間)は文字コードと改行が勝手に変換されやすいので、できれば対象システム側で書き出します。

日々のワークフローは一行に集約できます。保存はUTF-8(BOMなし)、改行はLF。これだけで後工程すべてが楽になります。書き出し後はプレーヤーとエディタの両方で一度ずつ開き、中国語・日本語・韓国語がすべて正常表示か確認してから下流へ渡します。もう一つの注意点:編集中に文字コードを切り替えないこと。UTF-8のファイルを一度でもGBKとして保存してしまうと、文字化けは内容に焼き付いてしまい、元ソースから再書き出しするしかありません。

字幕形式の選び方は 字幕形式の選択ガイド を参照してください。

よくある質問

同じSRTなのに、プレーヤーによって正常・文字化けが分かれるのは?

たいてい文字コードかBOMの差です。プレーヤーごとにUTF-8とBOMの扱いが違うため、UTF-8(BOMなし)に統一すれば通常は両方で正常になります。

改行コードは本当に表示に影響しますか?

最近のソフトの大半は両方の改行に対応していますが、一部の古いツールや組込みプレーヤーは片方しか認めず、行のくっつきやタイムコードの乱れを招きます。調査する価値はあります。

発生源で文字化けを防ぐには?

保存も書き出しもUTF-8(BOMなし)、改行はLFに統一し、システム間コピーによる勝手な変換を避けます。オンラインツールで書き出した字幕はこの基準で処理済みです。