テキストファイル
単純なテキストファイルでは、文字コードで表される文字以外のデータは格納できない。そのため、例えば次のようなデータを直接含むことができない。
付加情報を表すデータ 文書情報を表すデータ 文書の構造を表すデータ 文書や、その一部のスタイルやレイアウトを表すデータ
マルチメディア 画像 音声 動画
上記のデータをテキストで表現するには、何らかの書式やルールを定めて構造化したり、文字列としてエンコーディングしたりする必要がある。しかしその場合、バイナリと比べてファイルサイズが肥大化しがちになる。
これらの文字をサポートするために、ASCIIから派生したシングルバイト・マルチバイト文字セットの拡張規格が乱立し、国際的な文字データの交換に問題が生じる事態となったが、あらゆる言語の文字を包括する規格であるUnicodeおよびISO/IEC 10646が策定されたことによって統一が進みつつある。Webサイトの記述に使用されるHTMLおよびCSSなど、特に互換性が必要とされるテキストファイルには、UTF-8エンコーディングが採用されることがほとんどになっている。プログラミング言語で使われるソースファイルも、同様にUTF-8の採用が進んでいる。
テキストファイル自体はデータの羅列であり、文字のエンコーディング方式を記述/判定するために決められた方法はない。そのため、ファイル先頭に記述されたタグ情報やマジックナンバー(バイトオーダーマーク)をもとにエンコーディングを判断する、含まれるデータ列の規則性をもとにエンコーディングを推定する、あるいはエンコーディングを決め打ちで仮定するなどの方法を採る必要がある。
テキストファイルには、次の利点がある。こうした利点は、テキストファイルの単純さから生じている部分が大きい。
異なる環境間でも比較的互換性が高い。ASCIIの範囲内の文字データのみであれば、特に互換性が高い。
対応するプログラムを比較的容易に作成できる。
数値を可変長テキストで表現する場合、0や1のように1桁の数値は8ビット単位でエンコーディングすると1バイトで表現できるため、32ビットや64ビットの固定長バイナリ表現よりもデータが小さくなる。
数値を10進数テキストで表現する場合、内部表現に依存しない。例えば、2の補数やIEEE 754を採用しているシステムと採用していないシステムとの間で情報を交換しやすい。
8ビット単位(バイト単位)でエンコーディングする場合、エンディアン(バイトオーダー)に依存しない。
テキストファイルは一般的なテキストエディターで読み書きすることができるが、バイナリファイルはアプリケーションソフトウェアごとにさまざまなファイルフォーマットが存在しており、対応アプリケーションがないと読み書きが困難あるいは不可能であることも多い。