カタバミさんのプログラミングノート

日曜プログラマーがプログラミング関係のメモを記録するブログです。

プレーンテキストの概要・「文字」・その他の形式

身近な存在であるプレーンテキスト(plain text)について考えてみました。なお、ここで扱うプレーンテキストは平文(plaintext)ではなく拡張子.txtのファイルの内容(plain text)です。

プレーンテキストの概要

文字エンコーディングと制御文字程度の規則で人間の読める文書として表示するデータ形式をプレーンテキストと呼ぶようです。文字エンコーディングにはUS-ASCII、UTF-8などがあり、それぞれで改行(CR、LF)、水平タブ(HT)、空白(NUL)といった制御文字が定義されています。プレーンテキストを表示するソフトウェアはファイルデータを読み込み、文字を表示したり、改行やタブを行います。

ファイルデータからプレーンテキストであるかどうか(例えばバイナリファイルであるか)はソフトウェアには区別できず、Windows 10であれば拡張子やファイルを開く際の形式指定で人間がソフトウェアに教えます。例えば内容が31 32 33 34(16進数、4バイト)のファイルはASCIIやUTF-8のプレーンテキストとしては「abcd」という文字列を指しますが、バイナリファイルとしてバイト配列{0x31, 0x32, 0x33, 0x34}やWORD配列、DWORDなどの値を指すこともできます。<html><!DOCTYPE html>からはじまるファイルはHTMLかもしれませんがプレーンテキストに書かれたメモかもしれませんし、逆に<body>からはじまるファイルがHTMLかもしれません。

プレーンテキストの「文字」

プレーンテキストの文字とバイナリファイルのデータは表示が同じでも値が異なります。例えば、UTF-8プレーンテキストの0文字コード0x30(16進数)(U+0030)ですが、バイナリエディタで表示される0文字コード0(16進数)(U+0000)です。メモ帳などで「0」と書いたプレーンテキストをバイナリエディタに読み込ませたとき、バイナリエディタはそれを0でなく0x30として処理します。

プレーンテキスト:"01234"

バイナリファイル:[0x30, 0x31, 0x32, 0x33, 0x34] (JavaScriptの配列形式)

プレーンテキスト以外のファイル形式

Wikipedia英語版によるとプレーンテキストではないデータ形式にはFormatted text、Structured text、Binary Fileが挙げられるそうです。

Plain text - Wikipedia