文字コード

文字コード（もじコード、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**
Unicode文字符号化モデルでは、文字コードは以下の4段階に分けられる。
 抽象文字集合 （abstract character repertoire） : 符号化の対象とする順序のない文字の集合。ただし一般的な「文字」とは異なる場合があり、書記素と混同するべきではない。
 符号化文字集合（coded character set） : 抽象文字集合を非負整数に対応させたもの。この非負整数の範囲を符号空間、各値を符号位置といい、抽象文字は対応後、符号化文字となる。抽象文字は複数の符号化文字に対応されることもある（異体字セレクタ）。Unicodeでは代用符号位置・非文字符号位置・未割り当て符号位置があるため、すべての符号位置が抽象文字と対応しているわけではない。
 文字符号化形式（character encoding form） : 符号化文字集合の非負整数を符号単位列に変換する方法。文字符号化形式によってはひとつの符号化文字が複数の符号単位になる場合がある（サロゲートペア）。これを含め、文字により異なる長さの符号単位列となる文字符号化形式を可変幅、どの文字を変換しても同じ長さの符号単位列になるものを固定幅という。文字符号化形式はコンピュータ中に実際にデータとして文字を表現することを可能にする。
 文字符号化方式（character encoding scheme） : 符号単位列をバイト列に直列化する方法。符号単位が8ビットより大きい場合はエンディアンが関係してくる。
その後、バイト列をgzipなどで圧縮したり、7ビット伝送路に通すためBase64、uuencode、BinHex、Quoted-printableなどで変換することがあるがこれらは文字コードの範囲外である。

**類似の用語**
コードセット
この語はたとえば、ソフトウェアの実装において、任意の文字コードが扱えるよう実装すること（たとえばruby 1.9のStringオブジェクト）を指してコードセット独立（CodeSet Independent, CSI）といったように使われる。
キャラクタセット
MIMEではキャラクタセット（charsetまたはcharacter set）という概念が用いられる。言葉通りには「文字集合」であるが、実際に意味しているものは文字コードに近い。
この「キャラクタセット」は「オクテットの並びを文字の並びに変換する方式」などと定義されている。MIMEで実現する電子メールメッセージなどの処理を主眼に置いた概念である。
インターネット上で用いることのできる「キャラクタセット」の登録と公開はIANAが行っている（「外部リンク」参照）。
文字マップ
Unicode文字符号化モデルでは、文字列をバイト列に変換する4段階の操作を総称して文字マップ（character map; CM）と呼ぶ。
コードページ:IBMやマイクロソフトは独自に文字コードに番号（コードページ）を振って管理している。
エンコーディング
XMLにおいては、文字コードの宣言としてencodingという用語を用いている。

**外字**
外字とは表外字（規格表の外の文字）の略であり、ユーザがデザインして用いるユーザ定義文字や、メーカーなどが定義した環境依存文字（いわゆる機種依存文字）もしくはベンダ拡張漢字のことを指す。
外字というユーザが独自に文字を登録できる領域がある文字コードは複数存在する。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バイト系文字コード（符号化文字集合）**
1バイト系文字コードは、俗に「半角文字」と呼ばれることもある。
*US-ASCII（ASCII ANSI INCITS 4 対応）
*ISO/IEC 646
**ISO646-JP
*ISO/IEC 8859（ISO/IEC 8859-1 〜 ISO/IEC 8859-16）
**ISO-8859-1（ISO/IEC 8859-1 対応）
**ISO-8859-5（ISO/IEC 8859-5 対応）
**ISO-8859-6（ISO/IEC 8859-6 対応）
**ISO-8859-7（ISO/IEC 8859-7 対応）
**ISO-8859-11（ISO/IEC 8859-11 対応）
**ISO-8859-15（ISO/IEC 8859-15 対応）
*windows-1252（Microsoft Windows Codepage 1252 対応）
*macintosh（MacRoman 対応）
*KOI8-R
*KOI8-U
*TIS-620
*EBCDIC
*JIS X 0201（JIS ローマ字、カタカナ）

**2バイト系符号化文字集合**
2バイト系文字コードは、俗に「全角文字」と呼ばれることもある。
*JIS X 0208 - 日本。（第一・第二水準漢字など）
*JIS X 0212（補助漢字など）
*JIS X 0213（JIS X 0208 に第三・第四水準漢字などを追加した文字集合。JIS X 0213:2004はJIS2004とも呼ばれる）
*GB 2312 - 中国の簡体字中国語
*GB 18030 - 中国
*KPS 9566 - 朝鮮語が使われる北朝鮮
*KS X 1001（KS C 5601） - ハングルなどが使われる韓国
*Big5 - 繁体字中国語
*CNS 11643 - 台湾

**文字符号化方式と文字コード（キャラクタセット）**
ISO/IEC 2022系（ISO/IEC 2022自体は文字符号化方式というより、そのフレームワークのようなものである）
**ISO-2022-JP（1468、俗に「JISコード」と呼ばれる文字コード。JIS X 0208対応）
***ISO-2022-JP-1（2237、JIS X 0208とJIS X 0212に対応）
***ISO-2022-JP-2（1554、多言語拡張。JIS X 0208、JIS X 0212、GB 2312、KS X 1001、ISO/IEC 8859-1、ISO/IEC 8859-7対応）
***ISO-2022-JP-3（JIS X 0213:2000対応）
***ISO-2022-JP-2004（JIS X 0213:2004対応）
**ISO-2022-CN（1922、GB 2312、CNS 11643［第一字面・第二字面］対応）
***ISO-2022-CN-EXT（1922、GB 2312、ISO-IR-165、CNS 11643［第一字面から第七字面］対応）
**ISO-2022-KR（1557、KS X 1001対応）
*EUC……拡張 UNIX コード（EUC）文字符号化方式を用いた8ビットの文字コード。ISO/IEC 2022の8ビット符号化表現に相当する。
**EUC-JP（JIS X 0208 対応）
***EUC-JISX0213（JIS X 0213:2000対応）
***EUC-JIS-2004（JIS X 0213:2004対応）
**EUC-KR（1557、KS X 1001対応）
**GB2312（別名EUC-CN。GB 2312対応）
***GBK（Microsoft Windows Codepage 936対応）
***GB18030（GB 18030対応）
**EUC-TW（CNS 11643対応）
*シフト符号化表現の文字符号化方式を用いた8ビットの文字コード。
**Shift_JIS（JIS X 0208対応）
***Shift_JISX0213（JIS X 0213:2000対応）
***Shift_JIS-2004（JIS X 0213:2004対応）
**Windows-31J（Microsoftコードページ932対応）
**x-Mac-Japanese（MacJapanese対応）
*その他の文字符号化方式を用いた7ビットの文字コード。
**HZ-GB-2312（1842、1843、GB 2312対応）

**大規模文字集合**

**ISO/IEC 10646およびUnicode**
Unicode
*ISO/IEC 10646（UCS、JIS X 0221）※ISO/IEC 10646-1とISO/IEC 10646-2はISO/IEC 10646:2003で統合された。同様にJIS X 0221-1はJIS X 0221:2007で改訂された。JIS X 0221のうち、「日本文字部分レパートリ」はJIS X 0221 附属書JAという制限部分集合として定義する。

**Unicode の文字符号化方式**
UTF-8
*UTF-16 文字符号化形式
**UTF-16
**UTF-16BE
**UTF-16LE
**Compatibility Encoding Scheme for UTF-16: 8-Bit（CESU）
*UTF-32 文字符号化形式
**UTF-32
**UTF-32BE
**UTF-32LE
*UTF-7
*UTF-EBCDIC
*Standard Compression Scheme for Unicode（SCSU）
*Binary Ordered Compression for Unicode（BOCU-1）

**印刷業界の文字集合**
印刷業界においては、公的な文字コード規格では包摂されている異体字やグリフの相違を厳密に区別したいというニーズが強く存在する。そのため、そのようなニーズに応える文字集合が企業主導で策定されている。一般的な情報交換に用いられることはない。
*Adobe-Japan1文字コレクション
**Adobe-Japan1-0
**Adobe-Japan1-1（JIS X 0208-1990、MacJapanese対応）
**Adobe-Japan1-2（IBM拡張文字に対応）
**Adobe-Japan1-3（OpenType Std）
**Adobe-Japan1-4（OpenType Pro）
**Adobe-Japan1-5（OpenType Pr5、JIS X 0213にほぼ対応）
**Adobe-Japan1-6（OpenType Pr6、JIS X 0212・U-PRESS対応）
**Adobe-Japan1-7（「令和」元号の合字対応）
*Adobe-Japan2文字コレクション
**Adobe-Japan2-0（Adobe-Japan1-6に統合され廃止）
*Adobe-GB1文字コレクション（簡体字中国語）
**Adobe-GB1-0
**Adobe-GB1-1
**Adobe-GB1-2
**Adobe-GB1-3
**Adobe-GB1-4
**Adobe-GB1-5
*Adobe-CNS1文字コレクション（繁体字中国語）
**Adobe-CNS1-0
**Adobe-CNS1-1
**Adobe-CNS1-2
**Adobe-CNS1-3
**Adobe-CNS1-4
**Adobe-CNS1-5
**Adobe-CNS1-6
**Adobe-CNS1-7
*Adobe-Korea1文字コレクション（朝鮮語）
**Adobe-Korea1-0
**Adobe-Korea1-1
**Adobe-Korea1-2（Adobe-KR9に移行）
*Adobe-KR文字コレクション
**Adobe-KR9
*電算写植
**SKコード（SK72、SK78、外字A、外字B、外字C）
**:写研が開発した文字コード。独自の文字セットを持つ。文字セットの大部分はすでにAdobe-Japan1に収録されている。
**PMTコード
**:印刷機械貿易が開発した文字コード。
*新聞業界
**CO-59
**CO-77
**K-JIS
**U-PRESS
**:共同通信社が開発したユニコードベースの文字コード。
*電子書籍
**BBeB 標準文字セット
**:ユニコードをベースにソニーが拡張。
**新潮文庫の100冊の外字
**青空文庫が文学作品に登場するJIS X 0208にない文字を集めた文字リスト

**ベンダごとの文字コード**
以下は、主にメインフレーム・オフコンなどのプロプライエタリな古いレガシーコンピュータやレガシーなシステム、特殊な環境において利用される文字コードを含む。レガシーなものとの連携を目的とする場合を除き、パソコンで利用されることがないものが多い。

**その他の文字コード**
大漢和辞典 - 日本で漢字の収録がもっとも多い辞典。大漢和辞典の漢字番号が漢字の同定識別に使われることがある。
**今昔文字鏡 - 諸橋大漢和の重複などを指摘している。
**TRONコード - 今昔文字鏡を二次利用している。
*官公庁
**戸籍統一文字（戸籍統一文字番号） - 日本の戸籍システムで使用される文字。
**住基統一文字（住基ネット統一文字コード） - 日本の住民基本台帳ネットワークシステムで使用される住民基本台帳ネットワーク統一文字を符号化したもの。
**登記統一文字（登記統一文字番号） - 日本の登記情報システムで使用される文字（戸籍統一文字と登記固有文字からなる）。
**MJ文字（MJ文字図形名） - 日本の文字情報基盤の文字、IPAの文字情報基盤整備事業で整備された文字集合（戸籍統一文字と住基統一文字をもとに整備）。
**入管正字（入管正字コード） - 日本の在留カードおよび特別永住者証明書の氏名に使用できる漢字。
*デジタル放送
**ARIB外字 - 日本のARIB STD-B24にある文字符号化。
*企業・団体のコード
**筆まめ人名外字 - 日本の筆まめ社が自社ソフト用に作成したコード。
**JTBコード - 日本のJTBが自社の客室予約システムTRIPSで使用していた漢字コード。
**コード会のコード（案） - 日本のコード会により作成されたコード。

**脚注**

**注釈**

**出典**

**参考文献**
 安岡孝一、安岡素子『文字コードの世界』東京、東京電機大学出版局、1999年9月、ISBN 4-501-53060-X- 小池和夫、府川充男、直井靖、永瀬唯『漢字問題と文字コード』東京、太田出版、1999年10月、ISBN 4-87233-486-8- 『bit』2001年4月号別冊、小林龍生・安岡孝一・戸村哲・三上喜貴編「インターネット時代の文字コード」東京、共立出版、2001年4月、ISBN 4-320-12038-8- 三上喜貴『文字符号の歴史』アジア編、東京、共立出版、2002年3月、ISBN 4-320-12040-X
*Ken Lunde 『CJKV日中韓越情報処理』、東京、オライリー・ジャパン、2002年12月、ISBN 4-87311-108-0- 安岡孝一、安岡素子『文字符号の歴史』欧米と日本編、東京、共立出版、2006年2月、ISBN 4-320-12102-3

**関連項目**
マルチバイト文字
*文字化け
*機種依存文字

**外部リンク**
 IANA 文字集合レジストリ (IANA Character Set Registry) （IANA によって登録されている文字コードの情報一覧）- 文字コードについて- 文字コードの話- 文字コード入門
*2130: The Report of the IAB Character Set Workshop held 29 February 1 March（IABが文字コードについて検討したレポート）- Character Data Representation Architecture（IBM文字データ表現体系(CDRA)リファレンス IBMのベンダー規格）- Character Model for the World Wide Web 1.0: Fundamentals（W3CのWWW向け文字モデル：基本編）- Encoding Standard
** Encoding Standard 日本語訳