# 文字コード

**文字コード**（もじコード、英: character encoding）とは、識別番号を用いて文字などの記号を表す規則である。一般的に、通信技術やコンピュータで使用されるものを指す。**文字エンコード**または**文字エンコーディング**とも呼ばれる。

## 概説

コンピュータや通信などでは、情報は全て二進数のデジタルデータ（１と０の数値の列）形式で表されている。そのため、文字などを直接的に表現・記録することはできない。データを文字として扱うためには、各文字に通し番号（二進数からなる数値）を割り当て、その対応規則から文字情報を参照する体系が必要である。この体系が文字エンコードである。

文字エンコードで定義される文字は、**キャラクタ**または**符号化文字**（英：coded character）と呼ばれる。キャラクタは、自然言語の文字、数字、句読点、その他の記号、そして表示に関わる要素（制御文字）などが含まれる。体系内で登録される全てのキャラクタは**符号化文字集合**（英：coded character set ）と呼ばれ、キャラクタに対応している数値は**符号値**（英：code value）と呼ばれる。

例えば、文字エンコードの一つUTF-8では、英文字「A」は８ビット値「01000001」と対応（紐付け）してる。コンピュータファイル内の情報はこのビット値で管理・保存されているが、テキストエディタなどのアプリケーションでファイルを読み込む（この際、手動か自動でUTF-8の文字エンコードが選択される）と、数値は変換され画面上で文字として表示される。

現在、ASCII、ISO/IEC 8859、Unicode（UTF-8およびUTF-16）などの文字エンコードが使用されている。その中でも、国際規格として策定されたUnicodeが最も普及している。2024時点、ウェブで使用されている文字エンコードの98％以上がUTF-8である。

## 歴史

1870年代にはフランスの電信技術者のエミール・ボドーが、5ビットと文字・記号類を対応させるコードを発明し、1876年に、そのコードを用いる電信装置の特許をフランスで取得した（この装置に使われている5ビットのコードが**Baudot Code**（ボドー・コード）として知られるようになった）。

1958年から1959年にかけて、日本のコード会が文字コード案を作った。

1963年には、アメリカの情報通信用の文字コードとして7ビットの**ASCII**（アスキー、英: American Standard Code for Information Interchange の略）がアメリカ規格協会（ASA）で制定された。1964年にはIBM社がSystem/360とともにEBCDICという文字コード、4ビットのBCDを8ビットに拡張した文字コードを発表した。

## 類似の用語

文字エンコーディングに関わる用語は頻繁に誤解・誤用される。下記では、用語の実際の使われ方と意味を紹介する。

### 文字エンコーディング／文字エンコード

「文字コード」という呼称は、頻繁に「符号値」と同じ意味で用いられる。つまり、文字と番号を対応させる体系だけではなく、"文字に与えられた数値・番号そのもの"を指した言葉としても使用される。一方、W3Cでは、文字コードを「文字エンコーディング」と訳しており、英語「character encoding」の直訳に近い表現となっている。また、IBMは「文字エンコード」という訳を使用している。

### コードセット

この語はたとえば、ソフトウェアの実装において、任意の文字コードが扱えるよう実装すること（たとえばruby 1.9のStringオブジェクト）を指してコードセット独立（CodeSet Independent, CSI）といったように使われる。

### キャラクタセット

MIMEでは**キャラクタセット**（英語: charsetまたはcharacter set）という概念が用いられる。言葉通りには「文字集合」であるが、実際に意味しているものは文字コードに近い。
この「キャラクタセット」は「オクテットの並びを文字の並びに変換する方式」などと定義されている。MIMEで実現する電子メールメッセージなどの処理を主眼に置いた概念である。
インターネット上で用いることのできる「キャラクタセット」の登録と公開はIANAが行っている（「外部リンク」参照）。

### 文字マップ

Unicode文字符号化モデルでは、文字列をバイト列に変換する4段階の操作を総称して**文字マップ**（英: character map; CM）と呼ぶ。

### コードページ

IBMやマイクロソフトは独自に文字コードに番号（コードページ）を振って管理している。

## 外字

→詳細は「外字」を参照
外字とは表外字（規格表の外の文字）の略であり、ユーザがデザインして用いるユーザ定義文字や、メーカーなどが定義した環境依存文字（いわゆる機種依存文字）もしくは**ベンダ拡張漢字**のことを指す。

外字というユーザが独自に文字を登録できる領域がある文字コードは複数存在する。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（RFC 1468、俗に「JISコード」と呼ばれる文字コード。JIS X 0208対応）
		- ISO-2022-JP-1（RFC 2237、JIS X 0208とJIS X 0212に対応）
		- ISO-2022-JP-2（RFC 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（RFC 1922、GB 2312、CNS 11643［第一字面・第二字面］対応）
		- ISO-2022-CN-EXT（RFC 1922、GB 2312、ISO-IR-165、CNS 11643［第一字面から第七字面］対応）
	+ ISO-2022-KR（RFC 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（RFC 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（RFC 1842、RFC 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にない文字を集めた文字リスト

### ベンダごとの文字コード

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

| ベンダー | 文字コード | 特徴 |
| --- | --- | --- |
| マイクロソフト | 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。 |
| 富士通 | JEF（ジェフ） | メインフレーム（Mシリーズ、GSシリーズ）で利用される。JIS C 6226-1978をGR（Graphic Right）に展開し、その上方エリアに「JEF拡張漢字」というベンダ選定拡張漢字を配置。 |
| 富士通 | EUC-U90 | DS/90系UNIXサーバで利用される。JIS X 0208-1990をGRに展開し、「JEF拡張漢字」をシングルシフトのGR展開で表現。 |
| 日本電気 | JIPS（J）（ジップスジェー） | ACOS-6系メインフレームで利用される。JIS C 6226-1978の9区〜13区に特殊文字を登録し、GR領域に「G1集合」というベンダ選定拡張漢字を登録したコード。 |
| 日本電気 | JIPS（E）（ジップスイー） | ACOS-2、ACOS-4系メインフレームで利用される。JIPS（J）の上下1バイトをそれぞれEBCDICに変換して得られるコード。 |
| 日本電気 | NEC内部コード（E） | ITOS、A-VX系のオフコンで利用される。JIPS（J）の上1バイトをシフトさせたものに対して上下1バイトをそれぞれEBCDICに変換して得られるコード。 |
| 日立製作所 | KEIS(78)（ケイスナナハチ） | メインフレーム（Mシリーズ、APシリーズ）で利用される。JIS C 6226-1978をGRに展開し、その上方エリアに「拡張文字セット3」というベンダ選定拡張漢字を配置。 |
| 日立製作所 | KEIS(83)（ケイスハチサン） | メインフレーム（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で利用される。 |
| 日本ユニシス | LETS-J（レッツジェー） | ユニバック系メインフレームで利用される。JIS X 0208-1983をGRに展開し、その上方および左方エリアにベンダ選定拡張漢字を配置。 |
| 日本ユニシス | JBIS（ジェイビス） | バロース系のコンピュータで利用される。 |
| 三菱電機 | JSII（ジェイエスツー） ・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 縦書き用。 |

### その他の文字コード

* 大漢和辞典 - 日本で漢字の収録がもっとも多い辞典。大漢和辞典の漢字番号が漢字の同定識別に使われることがある。
	+ 今昔文字鏡 - 諸橋大漢和の重複などを指摘している。
	+ 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 によって登録されている文字コードの情報一覧）
* 文字コードについて
* 文字コードの話
* 文字コード入門
* RFC 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 日本語訳