どちらも「改行」を意味しますが、どちらが使用されるのはいつですか。
8 に答える
\r\n
Windowsスタイルです
\n
POSIXスタイルです
\r
は古いOSX以前のMacスタイルであり、現代のMacはPOSIXスタイルを使用しています。
\r
はキャリッジリターンで\n
あり、ラインフィードです。モニターがない古いコンピューターでは、プログラムの結果をユーザーに出力するためのプリンターしかありません。左から新しいラインを見つめて印刷したい場合は、ラインフィードを取得\n
する必要があります。キャリッジを最も左の位置に戻すために、これはWindowsプラットフォームで今回保存された古いコンピューターの構文からのものです。\r
\nは改行を意味します。これは、カーソルが次の行に移動する必要があることを意味します。
\rはキャリッジリターンを意味します。これは、カーソルが行の先頭に戻る必要があることを意味します。
Unixプログラムは通常、改行(\ n)のみを必要とします。
通常、Windowsプログラムには両方が必要です。
\ nは改行のみ、\ r \ nは改行とキャリッジリターンです(つまり、カーソルを左に移動します)。
'\ n'はUnixのデフォルトであり、'\ r\n'はWindowsのデフォルトです。
異なるオペレーティングシステムは、異なる方法で改行を処理します。最も一般的なものの短いリストは次のとおりです:DOSとWindows
彼らは、改行が2つの文字の組み合わせ、つまり'\ r \ n'(または13の後に10が続く)であることを期待しています。
Unix(したがってLinuxも)
Unixは、単一の「\n」を使用して改行を示します。
マック
Macは単一の「\r」を使用します。
そのため、フォルダパスなどを使用しているときに、アプリをWindowsからMacに移植すると、問題が発生します。
これは、オペレーティングシステムのWindows(\ r \ n)およびLinux(\ n)で改行がどのように表されるかを示しています。
Unixでは、\ rはキャリッジリターン(CR)と\ naラインフィード(LF)であり、これらが一緒になってWindowsの改行識別子になり、Unixの改行識別子に置き換えます。
Windowsでは\rもCRですが、\nはCRとLFの組み合わせです。つまり、効果的にCR + CR+LFをCR+LFに置き換えようとしています。あまり意味がありませんね。
「perldocperlop」から:すべてのシステムは、仮想「「\ n」」を使用して、「改行」と呼ばれる行末記号を表します。不変の物理的な改行文字のようなものはありません。オペレーティングシステム、デバイスドライバ、Cライブラリ、およびPerlがすべて共謀して保存しているのは幻想にすぎません。すべてのシステムが""\ r""をASCIICRとして読み取り、 "" \n""をASCIILFとして読み取るわけではありません。たとえば、Macではこれらが逆になり、ラインターミネータのないシステムでは、「"\n"」を印刷しても実際のデータが出力されない場合があります。一般に、システムの「改行」を意味する場合は「 "\ n"」を使用しますが、正確な文字が必要な場合はリテラルASCIIを使用します。たとえば、ほとんどのネットワークプロトコルは、CR + LF( "" \ 015 \012""または"" \ cM \ cJ "")ラインターミネータの場合、 "" \ 012 ""だけを受け入れることがよくありますが、 "" \015""だけを許容することはめったにありません。ネットワーキングに""\ n ""を使用する習慣を身につけると、いつかやけどを負う可能性があります。
違いは、異なるオペレーティングシステム間です。Windowsでは、改行文字は\r\n
Linuxでは\n
Mac OSX\r
であり、OSの設計者が何をしたかという問題があります。
C#では、Environment.NewLineを使用できます