はじめに
文字コード変換する際の注意点の一つとして、1文字を表現するために必要なバイト数が、使用する文字コードによって異なることは、《バイト数》 で軽く図解していますが、これ以外に見落としやすいのが《改行コード》。
今回は、改行コードについて簡単に。
改行コード
改行コードとは、その名の通り〝行を改める〟ためのコードで、コンピューターでテキストの行末を識別するための制御文字(らしい)です。
例えば、以下のような テキストデータ が有ったとします。
新年あけましておめでとうございます。
旧年中は格別のご高配を賜り、厚く御礼申し上げます。
本年も変わらぬご愛顧のほど、よろしくお願い申し上げます。
改行コードを
で表してみましたが、この文字列を表示するために読み込んでいくと「
」=「行末(右端)になった」と認識するので、次の文字の[旧]や[本]は、〝行を改めて〟表示エリアの一段下の行頭(左端)から表示し始めることになります。
なので、この画面上で表示すると
新年あけましておめでとうございます。
旧年中は格別のご高配を賜り、厚く御礼申し上げます。
本年も変わらぬご愛顧のほど、よろしくお願い申し上げます。
と言った表示になります。
1.改行コードのパターン
多くのシステムでは、改行コードを1つまたは連続する2つの特殊文字で表しています。
主なものは以下の3種類
| 略称 | 正称 | 16進数 | 表記 | 主な利用環境 |
|---|---|---|---|---|
| CR | Carriage Return | 0x0D | ¥r | 旧Mac (9以前) |
| LF | Line Feed | 0x0A | ¥n | Linux/UNIX, macOS (X以降) |
| CRLF | Carriage Return + Line Feed | 0x0D0A | ¥r¥n | Windows, HTTP/メール |
成り立ちや詳しい説明などは、AIが教えてくれたり、他のサイトで丁寧に説明されているので、興味が湧いた方はこの機会に是非検索してみてください。
2.改行コードが違うと
AIに「改行コードが違うとどうなる?」と聞いてみたところ、
システムが改行を正しく認識できないため、プログラムの実行やファイルの表示に不具合が発生する場合がある。
まぁ、ありがちなパターンは、
- Linux上に立てたWebサイトで収拾したデータを、Windows上で処理する(又はその逆)
- データを作るOSが、顧客(作成元)ごとに違う
でしょうか。
また、システム設計をする時に、きちんと改行コードのルールを決めていても、システム統合なんかが発生すると、統合元毎のルールが違うことはよく有る話。
結局どっちかに寄せるって話になりますが、それがなかなか決まらない。
やっぱりシステム改修はやりたくない。それが古いシステムなら尚更。。。
3.DataMagic でできること
DataMagic では、以下の2パターンに対応できます ![]()
a. ファイル単位で改行コードが違う
これは、入力設定と出力設定で、それぞれ改行コードを指定するだけ。
ファイルの形式が上記以外の場合は、各レイアウト情報で対応
b. ファイルの中で(行ごとに)改行コードが違う
こんなデータは無いと思いますが、レアケースとして。
対応はフォーマット&関数を使用します。
このファイルには、赤枠の[0A]だけと、青枠の[0D0A]の2種類の改行コードが、混在しています。
この場合は、以下の定義で対応できます。
入力側のファイル形式は〝フォーマット〟
フォーマット情報の内容は、
上記の定義で入力ファイルをプレビューすると、こんな感じで画面表示されます。
赤枠の[ ¥r ]は、上記青枠の[0D]の部分。
青枠の[0A]はデリミタ値として扱われているので、残りのこの特殊文字を仮に〝ゴミ〟と呼びます。
この〝ゴミ〟を削除するために、関数の「REPLACE_REG」を使います
マッピング情報設定で、たった一つの入力項目の出力先を編集で開き、関数のところに「REPLACE_REG{\r,}」と入れるだけ ![]()
今回は出力側の形式を CSV にしたので、出力項目で改行コードを 0D0A に設定。
処理結果は、以下の通り。
改行コードが 0D0A に統一されたファイルの出来上がり![]()
改行コードが、CRLF と、CR だけか LR だけの組合せはコレで対応可です。
その他の組合せの場合は。。。頑張ってください ![]()
以上です。






