はじめに
普段あまり気にしていなかったのですが、改行文字コードっていくつか種類があってどれ使うんだったけ?ってなるので、ここでそれぞれの特徴とWindows・Macで使用したときにどうなるかをまとめてしまいたいと思います。
目次
1. ラインフィード(LF)
2. キャリッジリターン + ラインフィード(CRLF)
3. キャリッジリターン(CR)
4. まとめ
1. ラインフィード(LF)
- UNIX系のOS(Linuxや最近のMacOSなど)で採用されている改行コード
- カーソルよ次の行に移れ!と命令する
- コードは「\n」
実際にJavascriptファイルをnodeで動かして試してみました。コードは以下のようにかなりシンプル。結果はコマンドプロンプトとターミナルで確認します。
console.log('abcde\nfg');
結果は以下の通り。
Windows10 ↓
MacOS Big Sur(11.5.2) ↓
Windowsでも改行されていますね、、、。なぜかはちょっとわからないです。。。
2. キャリッジリターン + ラインフィード(CRLF)
- Windowsで採用されている改行コード
- コードは「\r\n」
以下のコードで検証します。
console.log('abcde\r\nfg');
結果は以下の通り。
Windows10 ↓
MacOS Big Sur(11.5.2) ↓
これもMacで改行できてるんですよねー。
3. キャリッジリターン(CR)
- 昔のMacOS(McOS9まで)で採用されていた改行コード
- カーソルよ先頭に移れ!と命令するものであり、実際には改行コードではない
- 改行も同時に行ってくれる場合がある(行わない場合もあるので基本的には使わない方がいいかも)
- コードは「\r」
以下のコードで検証します。
console.log('abcde\rfg');
結果は以下の通り。
Windows10 ↓
MacOS Big Sur(11.5.2) ↓
先頭から文字が上書きされていますね。改行はされていません。
4. まとめ
検証のやり方がまずかったのか、OSによって改行コードを変えなくても改行ができてしまいました、、、。もしかしたら〇〇の場合だと改行されないっていう状況があったりするかもしれないので、
Windows: CRLF
それ以外: LF
とするのが安全だとは思います。
追記
プログラムライブラリによっては \n
と書くだけでOSに合った改行コードに変換してくれるらしいです。
なのであまりOSによって改行コードを変えるというのは意識しなくてもいいのかもしれませんね。