改行の、\nと\r\nの違いは何ですか？


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




`\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以前）

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

