ZX81文字セットは、 Timex Sinclair 1000やTimex Sinclair 1500を含む、Sinclair Research社のZX81ファミリーのマイクロコンピュータで使用される文字エンコーディングです。このエンコーディングは、1文字あたり1バイトを使用し、256のコードポイントで構成されています。ASCIIやEBCDICといった既存のエンコーディングとは関連性はありませんが、前身であるZX80の文字セットとは関連性があり、同一ではありません。

文字セットには、コードポイント0~63に存在する64個の固有のグリフがあります。最上位ビットがセットされている場合、文字は反転ビデオで生成されます。これはコードポイント128~191に対応します。これらの128の値は、ビデオメモリ(表示ファイルとして知られています)で表示可能な唯一の値です。残りのコードポイント(64~127および192~255)は、改行を表す118や、 Sinclair BASIC固有のキーワードなど、制御文字として使用されますが、一部は使用されていません。
使用可能な文字数がわずか64種類と限られているため、ラテン文字の小文字や、感嘆符やアットマークなどコンピュータで広く使われている記号など、多くの文字が使用できない。アポストロフィが使えないため、一部のソフトウェア開発者は代わりにコンマを使用している。
ブロックグラフィック文字は、スペースとしても使用されるコードポイント0を含めて11個あります。これらのうち最初の8個と、それらの反転ビデオバージョン8個(16コードポイント)を組み合わせると、低解像度64×48ピクセルグラフィック用に2×2の白黒ブロックピクセルに分割された文字セルのすべての組み合わせが提供されます。これらの2×2ブロックは、ブロック要素Unicodeブロックに存在します。さらに3つの文字は、1×2の黒、白、またはディザリングされたグレーのワイドブロックピクセルに分割されたセルを提供します。これらは、それらの反転ビデオバージョンおよび以前の2×2ブロックの一部と組み合わせることで、3レベル(白、ディザリングされたグレー、黒)の32×48解像度を提供します。基本的な11文字とそれらの反転ビデオバージョンを組み合わせると、合計で22個のブロックグラフィック文字になります。ディザリングされた文字(全部で6種類)はUnicodeでも利用可能ですが(主にレガシーコンピューティング用シンボルブロックに含まれています)、2020年以降にリリースされたUnicodeバージョン13.0以降でのみ利用可能です。
コードポイント11は、表示ファイルで使用される二重引用符(")記号です。BASIC関数はCHR$ 192同じ文字として出力されますが、BASICソースリストでは""と表示されます。これは、文字列区切り文字"と競合することなく、文字列にリテラル"文字を含めるために使用されます。[ 1 ]
ZX81 の文字セットはZX80 の文字セットから派生したものです。AZ や 0-9 など、ほとんど同じコードポイントを持っていますが、ブロックグラフィック文字、記号 "、-、+、*、/、=、>、<、BASIC キーワードトークン (多くの新しいものが追加されています) のコードポイントは異なります。制御文字にも変更があります。コードポイント 1 は、もはや印刷不可能な文字列終端文字ではありません。ZX81 8K BASIC ROM は、ZX80 の整数専用の 4K BASIC ROM を置き換えるアップグレードとしても利用可能でした。[ 2 ]
ZX81 システムフォントは、1 文字あたり 8×8 ピクセルのグリッドを使用しており、ほとんどのグリフは 6×6 ピクセルに収まり、行と列の間には水平方向と垂直方向に 2 ピクセルのスペースが残ります。ZX80 の ROM は、7×6 ピクセルのグリフがやや広く、グリフ間の水平方向のスペースは 1 ピクセルのみでした。また、ZX81 システムフォントでは、一部のグリフのデザインも変更されており、*、スラッシュ付きで丸みが少ない 0、丸みが少ない $、C、G、J などで顕著です。
後のZX Spectrumでは、文字コード全体がZX Spectrum文字セットに置き換えられました。これはASCIIの派生版であり、小文字などが含まれています。
以下の表は、ZX81の文字セットを示しています。各文字には、対応するUnicode文字が併記されています。スペース文字と制御文字は、それぞれの名前の略語で表されています。
CHR$ 192、同じ文字として印刷されますが、BASIC リストでは "" と表示され、文字列区切り文字 " と競合することなく、文字列にリテラル " 文字を含めるために使用されます。 [ 1 ]