SPACEKEY

Technical Memorandum

CRLF

October 8, 2014

Windowsの改行コードはCRLF、Unix系はLF、昔のMacはCR……というのはよく知られていることで、プログラミングをしているとよく扱うたぐいのものです。

横でコーディングをしているメンバーから、「改行がうまくいかない」と相談されて、てっきりなにか特殊なケースのことかと思っていたんですが、話を聞いていたら「10+13で……」と聞いて「ん?」となりました。

逆ですね。 コードだとCRが13、LFが10なのでそういう言い方だと、「13+10」が正しいはずです。

何がうまくいかなかったかというと、SQLServer側で改行の処理をしておいて、その内容をC#のテキストボックスにそのまま出力するようなことをしていて、「LFCR」で渡してしまっているものだから、改行されてからスペースが1個空いてしまうという状況になってました。 テキストボックスではCRは機能しないと思いますので、そうなっちゃうんでしょう。 CRはcarriage return、LFはline feedの略で、C#ではそれぞれ\r、\nのエスケープシーケンスで表現しますね。 文字列を改行させる時は\nを使います。コンソールアプリケーションで改行させずに出力する時は\rを使ってカーソルを行頭に戻すことができます。

で、ちょっと気になってCRLFについてWikipediaで調べてみたら驚きの事実が…… > 改行コード - Wikipedia > > これらの用語はタイプライターが由来である。タイプライターでは印字装置は固定され、紙の方が上下左右に移動することで、文字送りや行送りが行われる。英語などの左横書きにおける「キャリッジリターン」とは、紙を固定して移動する装置(キャリッジ)を元の位置に戻す(リターン、つまり紙の左端に印字装置が来る)ことである。「ラインフィード」とは紙を必要な行(ライン)だけ上に送る(フィード、つまり下の行に印字装置が来る)ことである。 タイプライターからの伝統だと言うことです。これは知らなかった、いい勉強になりました。