0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DataMagic】コード変換やってみた!文字コードの変換で注意する事《改行コード》

0
Last updated at Posted at 2026-04-17

はじめに

文字コード変換する際の注意点の一つとして、1文字を表現するために必要なバイト数が、使用する文字コードによって異なることは、《バイト数》 で軽く図解していますが、これ以外に見落としやすいのが《改行コード》

今回は、改行コードについて簡単に。

改行コード

改行コードとは、その名の通り〝行を改める〟ためのコードで、コンピューターでテキストの行末を識別するための制御文字(らしい)です。

例えば、以下のような テキストデータ が有ったとします。

新年あけましておめでとうございます。:leftwards_arrow_with_hook:旧年中は格別のご高配を賜り、厚く御礼申し上げます。:leftwards_arrow_with_hook:本年も変わらぬご愛顧のほど、よろしくお願い申し上げます。

改行コードを :leftwards_arrow_with_hook: で表してみましたが、この文字列を表示するために読み込んでいくと「:leftwards_arrow_with_hook:」=「行末(右端)になった」と認識するので、次の文字の[旧]や[本]は、〝行を改めて〟表示エリアの一段下の行頭(左端)から表示し始めることになります。

なので、この画面上で表示すると

新年あけましておめでとうございます。
旧年中は格別のご高配を賜り、厚く御礼申し上げます。
本年も変わらぬご愛顧のほど、よろしくお願い申し上げます。

と言った表示になります。

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パターンに対応できます :thumbsup:

a. ファイル単位で改行コードが違う

これは、入力設定と出力設定で、それぞれ改行コードを指定するだけ。

ファイルの形式が CSV や TEXT 形式の場合は :arrow_down:
Qiita_035-01.jpg

ファイルの形式が上記以外の場合は、各レイアウト情報で対応

b. ファイルの中で(行ごとに)改行コードが違う

こんなデータは無いと思いますが、レアケースとして。
対応はフォーマット&関数を使用します。

例えば、こんな:arrow_heading_down:入力ファイルが有ったとします。
Qiita_035-02.jpg

このファイルには、赤枠の[0A]だけと、青枠の[0D0A]の2種類の改行コードが、混在しています。

この場合は、以下の定義で対応できます。

:large_blue_diamond: 入力側のファイル形式は〝フォーマット〟
:large_blue_diamond: フォーマット情報の内容は、

:small_blue_diamond: 項目1つで、可変長のデリミタ指定
:small_blue_diamond: 項目タイプは、M(可変長文字)
:small_blue_diamond: 入力側のデリミタ値:0A (両方に共通して有るコード)で、カットするに :white_check_mark:
:small_blue_diamond: 出力側のデリミタ値:なし(ここは出力側の設定に因って変わります)

Qiita_035-03.jpg

上記の定義で入力ファイルをプレビューすると、こんな感じで画面表示されます。

Qiita_035-04.jpg

赤枠の[ ¥r ]は、上記青枠の[0D]の部分。
青枠の[0A]はデリミタ値として扱われているので、残りのこの特殊文字を仮に〝ゴミ〟と呼びます。

この〝ゴミ〟を削除するために、関数の「REPLACE_REG」を使います

マッピング情報設定で、たった一つの入力項目の出力先を編集で開き、関数のところに「REPLACE_REG{\r,}」と入れるだけ :scream:

Qiita_035-05.jpg

今回は出力側の形式を CSV にしたので、出力項目で改行コードを 0D0A に設定。

Qiita_035-06.jpg

処理結果は、以下の通り。

Qiita_035-07.jpg

改行コードが 0D0A に統一されたファイルの出来上がり:bangbang:

改行コードが、CRLF と、CR だけか LR だけの組合せはコレで対応可です。

その他の組合せの場合は。。。頑張ってください :sweat_smile:

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?