CRおよびLF
情報交換のためのアメリカ標準コード(ASCII)は、CARRIAGE-RETURN(CR)およびLINE-FEED(LF)を含む制御文字を定義しました。これらは、プリンターの印刷位置を初期のコンピュータープリンターに先行する機械式タイプライター。
プラットフォーム依存
Windowsでは、テキストファイルの従来の行区切り文字はCRの後にLFが続きます
古い(OSX以前)Apple Macintoshシステムでは、テキストファイルの従来の行区切り文字はCRでした
UnixおよびLinuxでは、テキストファイルの従来の行区切り文字はLFです。
\ nおよび\ r
多くのプログラミングおよびスクリプト言語で\n
は、「改行」を意味します。時々(ただし常にではない)、これはASCII LINE-FEED文字(LF)を意味します。これは、言うように、カーソル(または印刷位置)を1行下に移動します。プリンターまたはタイプライターでは、実際に用紙を1行上に移動します。
常に\r
ASCII CARRIAGE-RETURN文字(CR)を意味します。その名前は、紙を運ぶローラー(「キャリッジ」)がバネで動かされたキャリッジリターンキーがあった機械式タイプライターに由来します。それが行く限り。したがって、現在の入力位置を左マージンに設定します。
プログラミング
一部のプログラミング言語\n
では、テキストファイル内の行を終了または分離するプラットフォーム依存の文字シーケンスを意味する場合があります。たとえば、Perlでは、print "\n"
LinuxとWindowsでは異なる文字列が生成されます。
Javaでは、ランタイムプラットフォームでネイティブの行末を使用する\n
場合\r
、使用しないか、まったく使用しないことをお勧めします。を使用する必要がありますSystem.getProperty("line.separator")
。あなたは使用する必要があります\n
し、\r
あなたがプラットフォームに関係なくLFとCRを配置したい場所(HTTP、FTPおよび他のインターネットの通信プロトコルで使用される例として)。
Unix stty
Unixシェルでは、stty
コマンドを使用して、これらのさまざまな規則間でシェルを変換できます。たとえばstty -onlcr
、シェルはその後すべての発信LFをCR LFに変換します。
LinuxおよびOSXはUnixの規則に従います
テキストファイル
テキストファイルは依然として非常に重要であり、広く使用されています。たとえば、HTMLおよびXMLはテキストファイルの例です。HTTPなどの重要なインターネットプロトコルのほとんどは、テキストファイルの規則に従っており、行末の仕様が含まれています。
プリンター
最も安価なプリンター以外のほとんどのプリンターは、CRとLFを尊重しています。実際、これらは最も広く使用されているページ記述言語であるPCLおよびPostscriptの基本です。
\r\n
がWindowsでは大丈夫ですが、そうで\n\r
はないことを知っています\r\n
。また、私はそれ\n
が人々がLinuxで使用するもの\r
であり、単独で使用されるのと同じ目的ではないと聞いてい\r\n
ます。\r
本当に古いMacOSで使用されています。ただし、これらの事実は確認していません。