文字コード
文字コード(もじこーど)はコンピュータ上で文字を利用するために各文字に割り当てられる数値もしくは、数値と文字の対応関係(文字コード体系)。
概説
コンピュータでは、すべての文章は文字コードの並びとして扱う。コンピュータの発展が早かった英語圏やその他のアルファベットを使用する言語(主に西洋)、日本語、韓国語などは言語固有の文字コードが制定され、利用可能になっているが、大部分の言語ではコンピュータ上で文字を正常に表現することができない。文字コードの歴史はコンピュータの歴史とほぼ等しい。古くは英語圏で多く利用されてきた ASCIIコードや、IBMによって開発されたEBCDICがあった。しかしコンピュータシステムが多くの言語圏で利用されるようになるにつれて文字コードの種類も増大し、現在では 100種類以上の代表的な文字コードが存在する。
多様な文字コードの存在は文字コードの互換性問題をひきおこす。文字コードの互換性問題とは、ある文字コードで記録されたデータを別の文字コードに変換しようとするとき、一方で定義されている文字がもう一方では定義されていない (あるいは用途によって 2種類の文字に分けられている) という問題である。日本語では、これは特殊な人名用漢字などが入ったデータベースを扱うときなどに問題となる。また文字コードの変換にかかるコストはばかにならないことが多い。
近年、これらの互換性問題を解決するためにすべての言語の文字コードを統一する試みであるUnicodeが作られ、オペレーティングシステムやJava言語などの内部コードとして広く利用されている。マイクロソフトやアップルコンピュータなど世界的に事業を展開している企業は、今後Unicodeのみ拡張に対応していく方針であり、現に最近のOSは表面上はUnicode以外の文字コードを使っていても、内部処理上はUnicodeに変換して処理しているものが多い。
文字コードを語るときに非常によく混同されるのが文字集合と符号化方式の違いである。文字コードには、文字集合は等しいが符号化方式だけが異なる文字コードと、そもそも対象としている文字集合そのものが異なる文字コードがある。たとえば、日本語にはJIS X 0208というひとつの文字集合に対してISO-2022-JP(いわゆるJIS漢字コード)、EUC-JP、Shift_JIS など複数の符号化方式が存在する。Unicodeにも単一の文字集合に対してUTF-8、UTF-16、Punycode などの異なる符号化方式が存在する。また、それぞれ異なる文字集合を同じ符号化方式とする関係もある、符号化方式EUCに対してEUC-JPやEUC-CNなどである。通常、文字コードといえば符号化方式をさすことが多いが、文字集合と区別なく語られることも少なくない。
マイクロソフト 社のオペレーティングシステムではShift_JISを拡張したMicrosoft漢字コード(Windows-31J)が使われているが、これは文字集合と符号化方式の両方が独自拡張されたものである。一般に、対象とする文字集合が異なる文字コードを相互に変換する場合は一部の情報が失われることがある。
中国語圏では文字集合が互いに異なる2つの文字コードGB2312 とBIG5が存在する。
外字
外字というユーザや企業が独自に定義できる文字コード領域もあるが、独自に拡張した文字は、他の環境で読むことができないので、これらを使った文字はJIS X 0208-1997で原則禁止され、JIS X 0213-2000で外字の領域を利用したため、完全に使えなくなった。インターネットなどでも利用すべきではないとされている。しかし、iモードなどでは絵文字に外字の領域を利用している。
文字集合/符号化方式
1バイト系
1バイト系文字コードは、いわゆる半角英数字と呼ばれるもの。 ASCII ISO/IEC 646 ISO 8859(1~10) EBCDIC
2バイト系
2バイト系文字コードは、いわゆる全角文字と呼ばれるもの。 JIS X 0201(JISローマ字、カタカナ) JIS X 0208(第一、第二水準) JIS X 0211(JIS制御コード) JIS X 0212(補助漢字) JIS X 0213(第三、第四水準を追加した2000JIS、JIS X 0208の後継) ISO/IEC 2022(JIS X 0202) ISO-2022-JP (RFC 1468、JISと呼ばれる漢字符号化) ISO-2022-JP-1 (RFC 2237、JIS X 0212対応) ISO-2022-JP-2 (RFC 1554、多言語拡張) ISO-2022-JP-3 (JIS X 0213対応) ISO-2022-CN ISO-2022-CN-EXT ISO-2022-KR EUC EUC-JP EUC-JISX0213 EUC-KR EUC-TW EUC-CN Shift_JIS Shift_JISX0213 Microsoft漢字コード(Windows-31J/CP932/MS932) CIDエンコード Adobe-Japan1-0 Adobe-Japan1-1 Adobe-Japan1-2 Adobe-Japan1-3 (OpenType Standard) Adobe-Japan1-4 (OpenType Pro) Adobe-Japan1-5 (JIS X 0213対応)
UNICODE/その他
UNICODE/その他は、多言語を同時に扱うことを目的として開発された文字コード体系。 Unicode ISO/IEC 10646(UCS、JIS X 0221) ISO/IEC 10646-1(JIS X 0221-1) ISO/IEC 10646-2 UCS-2/UCS-4 UTF-8/UTF-16/UTF-32 TRONコード GB2312 GB18030 CNS11643