改行コードの CRLF と LF——違いと、揃えるべき場面
文字化け・文字コードのコラム
テキストファイルを別の環境に渡したら、改行が消えて全部つながって表示された。
あるいは、行末に見慣れない記号が並んだ。
こうした症状の多くは、改行コードの違いによるものです。
改行にも種類がある
改行は、目に見えない制御文字としてファイルに保存されています。
そしてこの文字が、OSによって異なります。
- CRLF: Windowsで使われる形式。2文字分(復帰+改行)を使います。
- LF: Mac(現行)やLinux、Unix系で使われる形式。1文字分です。
- CR: 古いMac(OS 9以前)で使われていた形式。今はほとんど見かけません。
同じ「1回の改行」でも、中身が1文字か2文字かという違いがあることになります。
揃っていないと何が起きるか
昔ながらの症状は、Windowsのメモ帳でLFのファイルを開くと改行が反映されず、全部が1行に見えるというものでした。
※近年のメモ帳はLFにも対応しているため、この現象は起きにくくなっています。
現在も残りやすいのは、次のような場面です。
- CSVを取り込むシステムでエラーになる: 想定した改行コードでないと、行の区切りを認識できないことがあります。
- Gitで全行が変更扱いになる: 中身を直していないのに、ファイル全体が差分として表示されることがあります。改行コードだけが変わった状態です。
- シェルスクリプトが動かない: CRLFのまま実行すると、行末の余分な文字が引数の一部として扱われ、エラーになることがあります。
どれも「見た目は同じなのに動かない」という形で出るため、原因にたどり着くまで時間を取られがちなところです。
変換は安全な操作
改行コードの変換は、制御文字を置き換えるだけなので、本文の文字が失われることはありません。
迷ったときは、渡す先に合わせて揃えておけば大きな問題にはなりにくいところかと思います。
- Windowsのソフトやシステムに渡す → CRLF
- Mac・Linux、Gitで管理するファイル → LF
MojiRescueの 改行コード・BOMの変換ページ では、文字コードを変えずに改行コードだけを揃えられます。
現在の改行コードが何なのかも読み込み時に表示されるので、確認だけの用途でも使えます。
ファイルの文字コードをブラウザ内で変換
MojiRescueなら、ファイルをドロップするだけで文字コード・BOM・改行コードを変換できます。ファイルは外部に送信されません。