Home > Notebook > Knowledge > 改行コード

改行コード

今回は改行コードの話です。普通みなさんは改行コードを意識することはないとは思いますが、私の業界や、それに近い方は何種類かの改行コードを意識させられる時があると思います。私の場合ですと、つい同じ仕事をしている方からテンプレートとなるファイルを頂き、それをもとにコーディングし、納品をしたら、お客様から「改行コード違うよ!!どうなってんの?」と言われてしまいました。。。

改行コードとは

改行コードとは、テキストファイル中で改行を意味する文字コードのこと。正確には、改行してカーソルを行頭に復帰する動作を指示するコードのことになります。
文字コード体系の種類には依存しませんが、もともと「CR」(Carriage Return : 行頭復帰)と「LF」(Line Feed : 改行)の2つのコードが存在していたことから、WindowsではCR+LF、Mac OSではCR、UNIXではLFが使われている。
Webブラウザや多くのテキストエディタはどの改行コードでも認識してファイルを読み込みます(書き出す時は特に指定しない限りそれぞれのOS標準に従う)が、CGIスクリプトやプログラムのソースファイルなどは、改行コードをコンパイラ等が正確に認識せずエラーの原因となりやすいです。例えば、Windowsで作成したCGIスクリプトをUNIXのサーバーに転送する際は、改行コードをCR+LFからLFに変換してやらなくてはなりません。

OS コード表記 16進表記 10進表記
UNIX LF 0A 10
Windows CR+LF 0D 0A 13 10
Macintosh CR 0D 13

FTPのモード

FTPソフトでサーバーにCGIスクリプトを転送する際に、転送モードを [テキストモード] や、[ASCIIモード] に設定しておくと、転送時に、自動的に適切な改行コードに変換してくれます。
主に、サーバとクライアント間のファイルのやりとりはFTPを使って行います。そこで、テキストファイル(htmlファイルやCGIのソースも含む)をやりとりする時に、サーバ側とクライアント側で改行コードが異なる場合があります。(例えば、UNIXサーバにWindowsマシンからFTPする時です。)
この時、改行コードをそのまま送ると、WindowsではCR+LFの改行コードを使用しているのに、UNIXではLFだけで改行コードとみなされ、プログラムなどでは余ったCRのせいで誤動作を起こす場合があります。
しかし、FFFTPなどのFTPトソフトでは、改行コードを自動的に設定して転送してくれたりするので、それほど意識していない人も多いかと思います。
誤動作を起こした場合には、FTPの2つのモードを使い分ける必要があります。

Asciiモード Asciiコード1(テキスト)を転送するためのモード、改行コードを変換してくれる。
binaryモード binaryファイルを転送するためのモード、改行コードを変換しない。

FTPソフトには、必ずこれを切り替える機能が存在しますので、必要に応じて切り替えて使いましょう。
また、拡張子によってモードを切り替える機能などもたいていはついていますので、.htmや.txt、あるいは.cgiや.plなどではAsciiモードを使うように設定しておくのがいいでしょう。
ちなみに、画像ファイルなどをAscii転送するとデータが壊れてしまうので注意しましょう。

Knowledge

Knowledgeとは

ここでは他のカテゴリには当てはまらないものばかりを集めてみました。