文字コード(もじコード、英: character code)は、文字(キャラクタ)を通信やコンピュータで扱えるように、一文字一文字に固有の識別番号を与えて区別できるようにした、その対応関係についての規則のこと。
文字コードは、文字や記号やそれに類するものを、通信やコンピュータで扱うために、各文字や記号などに対して番号を与えた対応規則の体系である。通常、通し番号を与え、文字と番号の対応表が作成される。どの文字コードを使うか決まっている状況では、ある数(番号)が与えられるとそれに対応する文字や記号を特定することができる。
1870年代にはフランスの電信技術者のエミール・ボドーが、5ビットと文字・記号類を対応させるコードを発明し、1876年に、そのコードを用いる電信装置の特許をフランスで取得した(この装置に使われている5ビットのコードがBaudot Code(ボドー・コード)として知られるようになった)。
1963年には、アメリカの情報通信用の文字コードとして7ビットのASCII(アスキー、英: American Standard Code for Information Interchange の略)がアメリカ規格協会(ASA)で制定された。1964年にはIBM社がSystem/360とともにEBCDICという文字コード、4ビットのBCDを8ビットに拡張した文字コードを発表した。
Unicode文字符号化モデルでは、文字コードは以下の4段階に分けられる。
その後、バイト列をgzipなどで圧縮したり、7ビット伝送路に通すためBase64、uuencode、BinHex、Quoted-printableなどで変換することがあるがこれらは文字コードの範囲外である。
外字とは表外字(規格表の外の文字)の略であり、ユーザがデザインして用いるユーザ定義文字や、メーカーなどが定義した環境依存文字(いわゆる機種依存文字)もしくはベンダ拡張漢字のことを指す。
外字というユーザが独自に文字を登録できる領域がある文字コードは複数存在する。Unicodeにおいては6,400+131,072文字の「PUA(Private Use Area=私用領域)」があり、Windows-31J(Microsoft Windows Codepage 932)にも1,880文字の外字領域がある。ユーザが独自にフォントを登録した文字(ユーザ定義文字)は、文書の交換時に配慮しない限りは他の環境で読むことができないため、互換性の上で重大な問題を引き起こす場合がある。ベンダ拡張文字の場合は、ユーザが表外字でないことを認識せずに利用してしまうことがあるため、より重大な問題を引き起こす(例として挙げれば、Windows環境(CP932)のローマ数字がMac環境では化けて表示されるなど)。
JIS規格においては、JIS X 0208で定義された文字集合に対してEUC-JPまたはShift_JISによる符号化を行う際、1〜94区に対応しない領域(EUC-JPやShift_JISでは94区に94点をかけた8,836を超える文字が定義可能であるため)や、1〜94区の範囲内であっても文字が定義されていない箇所(JIS X 0208には、そのような空き領域が複数存在している)に外字を入れる実装が存在した。1997年改正(JIS X 0208:1997)ではShift_JIS符号化およびEUC-JP符号化も規格で規定することにより、空き領域を外字として使用することが原則禁止された。またJIS X 0213:2000では、主要なベンダ外字の文字を規格に入れて94区までの空き領域をなくしたことで、94区までの区間内の外字を扱える箇所をなくし、2面を使用した実装水準4を選択する場合にはShift_JIS-2004符号化の場合、94区外の領域も埋まるため、外字を入れることが可能な領域がなくなった。
1バイト系文字コードは、俗に「半角文字」と呼ばれることもある。
2バイト系文字コードは、俗に「全角文字」と呼ばれることもある。
印刷業界においては、公的な文字コード規格では包摂されている異体字やグリフの相違を厳密に区別したいというニーズが強く存在する。そのため、そのようなニーズに応える文字集合が企業主導で策定されている。一般的な情報交換に用いられることはない。
以下は、主にメインフレーム・オフコンなどのプロプライエタリな古いレガシーコンピュータやレガシーなシステム、特殊な環境において利用される文字コードを含む。レガシーなものとの連携を目的とする場合を除き、パソコンで利用されることがないものが多い。
ベンダー | 文字コード | 特徴 |
---|---|---|
マイクロソフト | cp932 | マイクロソフト版Shift_JIS。 |
マイクロソフト | cp10001 | マイクロソフト版MacJapanese。 |
マイクロソフト | cp20290 | マイクロソフト版IBM CCSID 00290。 |
マイクロソフト | cp20932 | マイクロソフト版日本語EUC。 |
マイクロソフト | cp21027 | マイクロソフト版IBM CCSID 01027。 |
マイクロソフト | cp50220 | マイクロソフト版ISO-2022-JPの一つ。 |
マイクロソフト | cp50221 | マイクロソフト版ISO-2022-JPの一つ。 |
マイクロソフト | cp50222 | マイクロソフト版ISO-2022-JPの一つ。 |
マイクロソフト | cp51932 | Windows-31JをEUC-JPで表したもの。 |
サン・マイクロシステムズ | cp942C | cp942の拡張。 |
サン・マイクロシステムズ | cp943C | cp943の拡張。 |
Apple | MacJapanese | Apple版Shift_JIS。 |
富士通 | メインフレーム(Mシリーズ、GSシリーズ)で利用される。JIS C 6226-1978をGR(Graphic Right)に展開し、その上方エリアに「JEF拡張漢字」というベンダ選定拡張漢字を配置。 | |
富士通 | EUC-U90 | DS/90系UNIXサーバで利用される。JIS X 0208-1990をGRに展開し、「JEF拡張漢字」をシングルシフトのGR展開で表現。 |
日本電気 | ACOS-6系メインフレームで利用される。JIS C 6226-1978の9区〜13区に特殊文字を登録し、GR領域に「G1集合」というベンダ選定拡張漢字を登録したコード。 | |
日本電気 | ACOS-2、ACOS-4系メインフレームで利用される。JIPS(J)の上下1バイトをそれぞれEBCDICに変換して得られるコード。 | |
日本電気 | NEC内部コード(E) | ITOS、A-VX系のオフコンで利用される。JIPS(J)の上1バイトをシフトさせたものに対して上下1バイトをそれぞれEBCDICに変換して得られるコード。 |
日立製作所 | メインフレーム(Mシリーズ、APシリーズ)で利用される。JIS C 6226-1978をGRに展開し、その上方エリアに「拡張文字セット3」というベンダ選定拡張漢字を配置。 | |
日立製作所 | メインフレーム(Mシリーズ、APシリーズ)で利用される。JIS X 0208-1983をGRに展開し、その上方エリアに「拡張文字セット3」というベンダ選定拡張漢字を配置。 | |
日本IBM | IBM漢字(DBCS-Host) | メインフレーム(システム/360系)、AS/400系オフコン(現行製品ではIBM i搭載のPowerSystem)で利用される。JIS C 6226-1978以前に制定されたため、完全に独自の漢字表を使用。漢字部分については、Windows-31Jの第一・第二水準漢字およびIBM拡張文字との間で一対一の対応がある。 |
日本IBM | cp930 | メインフレームで利用される。 |
日本IBM | cp932 | IBM OS/2で利用される。マイクロソフトのcp932との同一性は未確認。 |
日本IBM | cp939 | メインフレームで利用される。 |
日本IBM | cp942 | IBM OS/2で利用される。 |
日本IBM | cp943 | IBM OS/2で利用される。 |
日本ユニシス | ユニバック系メインフレームで利用される。JIS X 0208-1983をGRに展開し、その上方および左方エリアにベンダ選定拡張漢字を配置。 | |
日本ユニシス | バロース系のコンピュータで利用される。 | |
三菱電機 | ・MELCOM漢字 |
三菱電機のメインフレームで利用される。JIS X 0208-1983をGRに展開し、その上方エリアにベンダ選定拡張漢字を配置。 |
DEC | DEC 漢字 | ミニコンのVAX用OSであるVMSで利用される。JIS X 0208-1983をGRに展開し、その左方エリアにベンダ選定拡張漢字を配置。 |
DEC | Super DEC 漢字 | ミニコンのVAX用OSであるVMSで利用される。JIS X 0208-1983をGRに展開し、その左方エリアにベンダ選定拡張漢字を配置。そして、シングルシフトのGR展開でJIS X 0212を表現。 |
アドビ | 90ms-RKSJ-H | アドビ版cp932 横書き用。 |
アドビ | 90ms-RKSJ-V | アドビ版cp932 縦書き用。 |
アドビ | 90msp-RKSJ-H | アドビ版cp932 半角英字プロポーショナル版横書き用。 |
アドビ | 90msp-RKSJ-V | アドビ版cp932 半角英字プロポーショナル版縦書き用。 |
アドビ | 83pv-RKSJ-H | アドビ版漢字Talk6拡張版Shift_JIS 横書き用。 |
アドビ | 90pv-RKSJ-H | アドビ版MacJapanese 横書き用。 |
アドビ | Add-RKSJ-H | アドビ版富士通FMR拡張版Shift_JIS 横書き用。 |
アドビ | Add-RKSJ-V | アドビ版富士通FMR拡張版Shift_JIS 縦書き用。 |
アドビ | Ext-RKSJ-H | アドビ版NEC拡張版Shift_JIS 横書き用。 |
アドビ | Ext-RKSJ-V | アドビ版NEC拡張版Shift_JIS 縦書き用。 |