5.1.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のASCIIおよびEBCDICの標準定義に基づいています。
NELは実際にASCIIでは定義されていません。C1制御としてISO6429で定義されています。
詳細については、以下を参照してください。