20

改行の、\nと\r\nの違いは何ですか?
\nだけで動かない環境があり疑問に思いました。

nekketsuuu
  • 23,683
  • 11
  • 50
  • 115
とちー
  • 201
  • 1
  • 2
  • 3

3 Answers3

21

\nはLF文字(Line Feed)、\rはCR文字(Carriage Return)と呼ばれる制御文字です。

テキストの改行を表現する方法は、システムによって下記3パターンが存在します。その表現方法が使われている代表的なOSも併記しています。

  • \n(LF):Unix系OS全般、Mac OS X
  • \r\n(CR+LF):Windows系OS
  • \r(CR):古いMac OS(9以前)

コンピュータ上の表現としては\n1文字で扱うのが自然ですが、もともとタイプライター由来で\r\nが利用されていたという歴史的経緯があります。(CRが印字装置を左端に戻す動作+LFが紙を1行分スクロールする動作)

yohjp
  • 10,194
  • 2
  • 22
  • 91
2

通信プロトコルではCRLF(\r\n)が使われる傾向があります。たとえば、HTTPやメールのプロトコルでは改行コードとしてCRLFが定められています。

emasaka
  • 2,868
  • 11
  • 11
1

UNIX系のOSでは\nが使われ
Microsoft系のOSでは、\r\nが使われる。
\r\nでも通常は\nへの変換が行われるために問題無いが
バイナリ扱いの場合とか
CygwinのようなMicrosoft系OS上でUNIX系の動作をさせようとする場合に問題になることがある。

BLUEPIXY
  • 6,907
  • 1
  • 21
  • 34