IT技術者の基礎知識 "テキスト/バイナリファイル、文字コード、改行コード"について その2
株式会社テイクーワンのT.Tです。
前回に引き続きテキスト/バイナリファイル、文字コード、改行コードについて解説していきます。
テキストファイルの見え方
同じtext.txtというファイルをテキストエディタ、バイナリエディタで見てみましょう。
下はテキストエディタで開いてみた画像です。
下はバイナリエディタで開いてみた画像です。
テキストエディタで開いてみると"test"という文字列が表示されていて、バイナリエディタで見るとASCIIコードでの"test"に相当する16進数の並び0x74, 0x65, 0x73, 0x74になっています。
※0x0D, 0x0AはWindowsでの改行を表します。
※テキストエディタはテキストファイルをテキストとして閲覧、編集するためのもので、バイナリエディタはファイルをバイナリで閲覧、編集するためのエディタです。
改行コード
「"0x0D, 0x0A"はWindowsでの改行を表します。」と記載しましたが、改行について説明します。下記のテキストで見ると"test"の後ろで改行(赤で囲んだところ)されているのがわかると思います。Windowではこの"0x0D, 0x0A"によって改行されます。これを改行コードと言います。
ASCIIコードでは0x0D, 0x0Aは何に割り当てられているのか見てみましょう。
※出典は下記からです。
ASCII(アスキー / US-ASCII)とは - 意味をわかりやすく - IT用語辞典 e-Words
上の赤で囲んだところを見ると0x0DはCR、0x0AはLFに割り当てられているのがわかります。
改行コードは文字コードによって変化するものではなくWindowsであれはShift JIS、UTF-8等の文字コードによらずCRLFと決まっています。「Windowsであれば」と書きましたが、UNIX系OSやMacだと変わってきて下記ようになります。
Windows系:CR+LF
Unix系:LF
Mac系:CR
この改行コードとても大事で、Windowsで作ったシェルスクリプトや各種プログラミング言語のスクリプト、設定ファイル等をUnix系OSであるLinuxへ持っていくと、なんだか動かないけど原因は改行コードだったということがよくあります。気をつけましょう。
テキストエディタでの文字コードと改行コード
下の画像はサクラエディタでの例ですが赤で囲ったところに、開いているテキストファイルの改行コード(CRLF)、文字コード(UTF-8)が表示されています。他のエディタでもに似たような感じで表示されます。
下の画像はサクラエディタのファイル保存画面です。赤で囲ったところで文字コード、改行コードを選択して保存することができます。他のエディタでも似たような感じで保存時に文字コード、改行コードを選択して保存することができます。
文字化け
下の画像は文字コードがUTF-8のテキストファイルをShift JISで開いてみたものです。いわゆる文字化けが発生しています。いわゆる文字化けの原因の一つとして文字コードが間違っているというものがあります。
参考情報
記事の中で使用しているテキストエディタ
サクラエディタ (sakura-editor.github.io)
記事の中で使用しているバイナリエディタ
Binary Editor BZ (devil-tamachan.github.io)
ASCII(アスキー / US-ASCII)とは - 意味をわかりやすく - IT用語辞典 e-Words
知っておきたい! 文字コードの基礎知識 ……ASCII,シフトJIS,Unicode etc.:新刊ピックアップ|技術評論社 (gihyo.jp)