5.2.7 キャリッジ・リターン、ライン・フィード、改行
改行は、プラットフォームに応じて、キャリッジ・リターン(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で定義されています。
詳細については、以下を参照してください。
ww.w3.org/TR/newline
www.unicode.org/unicode/reports/tr13/tr13-5.html