

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


CC BY-SA 3.0
2015-07-31T21:07:00.740
12897
2017-03-27T05:42:11.887
2017-03-27T05:42:11.887
19110
10750
question
テキストファイル 文字コード
改行の、\nと\r\nの違いは何ですか？


ＵＮＩＸ系のＯＳでは`\n`が使われ  
Ｍｉｃｒｏｓｏｆｔ系のＯＳでは、`\r\n`が使われる。  
`\r\n`でも通常は`\n`への変換が行われるために問題無いが  
バイナリ扱いの場合とか  
CygwinのようなＭｉｃｒｏｓｏｆｔ系ＯＳ上でＵＮＩＸ系の動作をさせようとする場合に問題になることがある。


CC BY-SA 3.0
2015-07-31T21:18:17.780
12899
2015-07-31T21:18:17.780
5044
12897
answer


`\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行分スクロールする動作）


CC BY-SA 3.0
2015-08-01T00:38:31.830
12903
2015-08-01T01:04:39.240
2015-08-01T01:04:39.240
49
49
12897
answer


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

  * [RFC2822](https://www.ietf.org/rfc/rfc2822.txt)


CC BY-SA 3.0
2015-08-01T06:55:56.217
12909
2015-08-01T06:55:56.217
4010
12897
answer