改行は、プラットフォームに応じて、キャリッジ・リターン(CR)、ライン・フィード(LF)、CRLF、改行(NEL)になります。

改行はプラットフォームによって異なる文字で表される上に、、同じプラットフォームであってもその動作は曖昧です。

これは大きな問題です。特にWebの場合、1台のコンピュータ上のテキストが多くのソースから生成されている場合があります。

多くの場合、文字セットの変換時に、これらの文字は対応するUnicodeに直接変換されます。つまり、純粋なUnicodeを扱うプログラムであったとしても、上記の問題を考慮する必要があります。


Unicode

ASCII

EBCDIC 1

EBCDIC 2

CR

000D

0D

0D

0D

LF

000A

0A

25

15

CRLF

000D 000A

0D 0A

0D 25

0D 15

NEL

0085

85

15

25

VT

000B

0B

0B

0B

FF

000C

0C

0C

0C

LS

2028

n/a

n/a

n/a

PS

2029

n/a

n/a

n/a

EBCDICシステムでは、LFおよびNELという2つのマッピングが使用されます。

最初のEBCDIC列は、MVSオープン・エディション(CP1047を含む)マッピング、2番目の列はCDRAマッピングです。

ASCIIベースのLinux環境や、Linuxの利用を前提とする一部のデータ転送プロトコルでLF文字を改行として扱う場合、この違いが生じます。

2番目の列はLFのEBCDICおよびASCIIの両方の標準定義に基づいています。

実際はNELはASCIIでは定義されていません。C1制御としてISO6429で定義されています。

詳細については、以下を参照してください。