文字コード(もじこーど)はコンピュータ上で文字を利用するために各文字に割り当てられる数値もしくは、数値と文字の対応関係(文字コード体系)。
文字コードの歴史は電気通信の歴史とほぼ等しい。古くはテレックスで用いられた国際電信アルファベット第2、英語圏で多く利用されてきた ASCII、IBMによって開発されたEBCDICがあった。しかしコンピュータシステムが多くの言語圏で利用されるようになるにつれて文字コードの種類も増大し、現在では 100種類以上の代表的な文字コードが存在する。
多様な文字コードの存在は文字コードの互換性問題をひきおこす。文字コードの互換性問題とは、ある文字コードで記録されたデータを別の文字コードに変換しようとするとき、一方で定義されている文字がもう一方では定義されていない (あるいは用途によって 2種類の文字に分けられている) という問題である。日本語では、これは特殊な人名用漢字などが入ったデータベースを扱うときなどに問題となる。また文字コードの変換にかかるコストはばかにならないことが多い。
近年、これらの互換性問題を解決するためにすべての言語の文字コードを統一する試みであるUnicodeが作られ、オペレーティングシステムやJava言語などの内部コードとして広く利用されている。マイクロソフトやアップルコンピュータなど世界的に事業を展開している企業は、今後Unicodeのみ拡張に対応していく方針であり、現に最近のOSは表面上はUnicode以外の文字コードを使っていても、内部処理上はUnicodeに変換して処理しているものが多い。
JIS規格においては、JIS X 0208-1997で空き領域を外字として使用することが原則禁止され、JIS X 0213-2000では、従来の空き領域に文字を追加したため、完全に使えなくなった。
なお、外字とは表外字(規格表の外の文字)の略であり、狭義にはユーザがデザインして用いるユーザ定義文字を指し、広義にはメーカーなどが定義した機種依存文字もしくはベンダ拡張漢字というものを含めることがある。
「符号化文字集合」とは「Coded Character Set」の訳語であり、「文字符号化方式」とは「Character Encoding Scheme」の訳語である。
文字コードを語るときに非常によく混同されるのが文字集合と符号化方式の違いである。文字コードには、文字集合は等しいが符号化方式だけが異なる文字コードと、そもそも対象としている文字集合そのものが異なる文字コードがある。たとえば、日本語にはJIS X 0208というひとつの文字集合に対してISO-2022-JP(JISコード等と呼ばれることが多い)、EUC-JP、Shift_JIS など複数の符号化方式が存在する。Unicodeにも単一の文字集合に対してUTF-8、UTF-16、Punycode などの異なる符号化方式が存在する。また、それぞれ異なる文字集合を同じ符号化方式とする関係もあり、符号化方式EUCに対してEUC-JPやEUC-CNなどがある。通常、文字コードといえば符号化方式をさすこともあれば、文字集合と結合させた概念として語られることもある。これには、ISO 8859やBig5のように、文字集合と符号化方式が事実上一体化している体系が少なからず存在することも影響している。
1バイト系文字コードは、いわゆる半角英数字と呼ばれるもの。
2バイト系文字コードは、いわゆる全角文字と呼ばれるもの。
文字コード | Zeichenkodierung | Character encoding | Codificación de caracteres | Page de code | Codificación de caracteres | 字符集