16
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LITALICOAdvent Calendar 2024

Day 9

一瞬で理解する改行コード

Last updated at Posted at 2024-12-08

はじめに

株式会社LITALICOの@iwafsです。
業務で改行コードの処理を行うことが度々あるのですが、
毎度検索している気がするのでこの機会に改行コード・改行文字についてまとめてみました。

結論

改行コードまたは改行文字とは、コンピュータ上で改行を表す制御文字のことです。
全部で3種類あり、OSによってコードが異なります。

コード 正称 意味 OS エスケープ
シーケンス
ASCII
CRLF Carriage Return
Line Feed
行頭復帰かつ改行 Windows \r\n 0x0A
0x0D
CR Carriage Return 行頭復帰 macOS 9以前 \r 0x0A
LF Line Feed 改行 Unix系,
macOS X以降,
iOS,
Android
\n 0x0D

改行コードの由来

改行コードのCR(Carriage Return:キャリッジリターン)やLF(Line Feed:ラインフィード)はタイプライターの改行動作が由来です。
タイプライターを使用して文章を書く際は、この2つの動作で改行を行っていました。

  • CR:ロール紙を挟み込むキャリッジを行の先頭へ戻す
  • LF:ロール紙を回して1行送る

OSによって改行コードが異なる理由

諸説あるそうですがOSの成り立ちや設計哲学が異なるため改行コードも異なり、
そのまま慣習的に別々の改行コードを採用しているようです。

ちなみにmacOSのバージョンによって改行コードが異なるのは、
macOS 9からmacOS Xへバージョンアップする際にUnixベースのOSへ移行したからです。

改行コードの差異による問題

異なるOS間でファイルのやりとりを行うと、改行コードの違いによって改行が無視されたりコンパイルエラーが発生することがあります。
この場合、各種エディタやターミナルから改行コードの変換を行うことができます。

改行コードがCRの場合の変換方法は、macOS 9以前しか使われていないため省略します。

Visual Studio Codeで変換する場合

  1. 現在の改行コード表示部をクリックします
  2. 変換したい改行コードを選択します
  3. 改行コードが変換されたことを確認します

ターミナルで変換する場合

  1. 以下コマンドを実行して現在の改行コードを確認します
    $ file hoge.txt
    
  2. 改行コードがCRLFまたはCRの場合はその旨が表示され、LFの場合は何も表示されません
    hoge.txt: Unicode text, UTF-8 text, with CRLF line terminators # CRLF
    hoge.txt: Unicode text, UTF-8 text, with CR line terminators   # CR
    hoge.txt: Unicode text, UTF-8 text                             # LF
    
  3. dos2unixコマンドをインストールします
    brew install dos2unix
    
  4. 以下コマンドを実行して改行コードを変換します(unix2dosdos2unixパッケージに含まれています)
    # CRLF -> LF
    $ dos2unix hoge.txt
    # LF -> CRLF
    $ unix2dos hoge.txt
    
  5. 変換後の改行コードを確認します
    $ file hoge.txt
    

おわりに

普段意識することが少ない改行コードですが、異なるOS間でのファイルのやりとりを行う際には、その違いによって問題が生じることがあります。
改行コードの違いを理解して、適切にファイル管理していきましょう!

16
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?