Windowsの改行マーカーはCR+LF
であるべきですが、Unixでは改行マーカーはLF
です。Windowsで「 n」に新しい行を付けるのはなぜですか?
私はConsole.Write("line1\nline2");
のようなものを使用する場合、なぜそれが「適切に」仕事と私の2行を与えるだろうか?私はこの\n
が動作しないことを期待しており、\r\n
のコンボだけが動作するでしょう。
Windowsの改行マーカーはCR+LF
であるべきですが、Unixでは改行マーカーはLF
です。Windowsで「 n」に新しい行を付けるのはなぜですか?
私はConsole.Write("line1\nline2");
のようなものを使用する場合、なぜそれが「適切に」仕事と私の2行を与えるだろうか?私はこの\n
が動作しないことを期待しており、\r\n
のコンボだけが動作するでしょう。
'\ n'は改行文字です。伝統的に、プリンタは用紙を1行上に巻いた。 '\ r'はキャリッジリターン文字で、これは伝統的にプリンタヘッドが用紙の左端に移動する原因となります。
プリンタとこのように文字を解釈コンソールに、line1\nline2
の出力は
line1
line2
多くのコンソール(および編集)、新しいを開始することを意味するために「\ n」を解釈するだろうとは、その新しい行の先頭にカーソルを置きます。それはあなたがここに見るものです。
あなたはむしろ、特定の定数をハードコーディングするよりもEnvironment.NewLineを使用する必要があります。
コンソールは私が推測するビューアですか? –
@OAOD:確かに、 'type myFileWithSlashNDelimiters'は、テキストを別々の行または1つの長い行として表示します。どちらがどちらかというと視聴者だとはっきりしていません。私は彼がConsole.Write()を使用していることを明確にする前に答えました。 –
'\ n'はASCIIテーブルの改行文字ですので、もちろん新しい行が得られます。予期せぬことは、 'Console.Write'メソッドは、Askerが提供していない' \ r'とキャリッジリターンを意味するようです。 – H2ONaCl
ファイルエンコード!= Console
解釈。言い換えれば
CR
+ LF
の「Windowsの標準は、」ファイルのために存在している間、ちょうどLF
、または\n
は、適切なキャリッジリターンとコンソールウィンドウの新しい行の解釈をもたらしました。
\ n改行文字です。 * nixシステムとWindowsシステムの両方で、2行作成する必要があります。 \ rはキャリッジリターンで、筆記用具を行の先頭に移動します。
最近のほとんどのコンソールは/編集者は、それは、\を受け入れるn個の文字をエスケープするときWriteLineメソッドを持つコンソール(にあなたが出力)、\ rを\ nは私の経験で
として\ nを解釈するのに十分な弾力性があります。 StreamWriterを使用してWriteLine()を呼び出すと、\ r \ nと入力すると新しい行に移動します。私はコンソールが\ nエスケープ文字をキャリッジリターン\ rなしで受け入れるようにプログラムされていると仮定します。
これは、基本となるWindowsコンソールの標準的な動作です。 0x0A
をコンソールに出力すると、ネイティブCアプリはまったく同じように動作します。
もちろん、新しい行には Environment.NewLine
を使用する必要があります。 Environment.NewLine
は、システムのようなUnix上でのWindows と\n
に\r\n
に解決されます。
このようなファイルを表示するために何を使用していますか? – Oded
チャンスはC#が暗黙のうちに変換を行っている可能性があります。 –
私はこの行を 'Console.Write()'を使ってコマンドラインコンソールに表示しています。 – user1032613