文字コード (もじコード、英 :character encoding )とは、識別番号を用いて文字 などの記号 を表す規則である。一般的に、通信技術やコンピュータ で使用されるものを指す。文字エンコード [ 1] または文字エンコーディング [ 2] とも呼ばれる[ 3] 。
コンピュータ や通信などでは、情報は全て二進数 のデジタルデータ (1と0の数値の列)形式で表されている。そのため、文字などを直接的に表現・記録することはできない。データを文字として扱うためには、各文字に通し番号(二進数からなる数値)を割り当て、その対応規則から文字情報を参照する体系が必要である。この体系が文字エンコードである。
文字エンコードで定義される文字は、キャラクタ または符号化文字 (英:coded character)[ 4] と呼ばれる。キャラクタは、自然言語 の文字 、数字 、句読点 、その他の記号、そして表示に関わる要素(制御文字 )などが含まれる。体系内で登録される全てのキャラクタは符号化文字集合 (英:coded character set )と呼ばれ、キャラクタに対応している数値は符号値 (英:code value)と呼ばれる[ 4] 。
例えば、文字エンコードの一つUTF-8 では、英文字 「A」は8ビット 値「01000001」と対応(紐付け)してる。コンピュータファイル 内の情報はこのビット値で管理・保存されているが、テキストエディタ などのアプリケーション でファイルを読み込む(この際、手動か自動でUTF-8の文字エンコードが選択される)と、数値は変換され画面上で文字として表示される。
現在、ASCII 、ISO/IEC 8859 、Unicode (UTF-8 およびUTF-16 )などの文字エンコードが使用されている。その中でも、国際規格として策定されたUnicodeが最も普及している。2024時点、ウェブ で使用されている文字エンコードの98%以上がUTF-8である[ 5] 。
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ビット に拡張した文字コードを発表した。
文字エンコーディングに関わる用語は頻繁に誤解・誤用される[ 6] 。下記では、用語の実際の使われ方と意味を紹介する。
「文字コード」という呼称は、頻繁に「符号値」と同じ意味で用いられる。つまり、文字と番号を対応させる体系だけではなく、"文字に与えられた数値・番号そのもの"を指した言葉としても使用される。一方、W3C では、文字コードを「文字エンコーディング」と訳しており、英語「character encoding」の直訳に近い表現となっている[ 2] 。また、IBM は「文字エンコード」という訳を使用している[ 1] 。
この語はたとえば、ソフトウェア の実装において、任意の文字コードが扱えるよう実装すること(たとえばruby 1.9 のStringオブジェクト)を指してコードセット独立(CodeSet Independent, CSI)といったように使われる[ 7] 。
MIME ではキャラクタセット (英語 :charsetまたはcharacter set )という概念が用いられる。言葉通りには「文字集合」であるが、実際に意味しているものは文字コードに近い。この「キャラクタセット」は「オクテット の並びを文字 の並びに変換する方式」などと定義されている[ 8] 。MIMEで実現する電子メール メッセージなどの処理を主眼に置いた概念である。インターネット 上で用いることのできる「キャラクタセット」の登録と公開はIANA が行っている(「外部リンク」参照)。
Unicode文字符号化モデルでは、文字列をバイト列に変換する4段階の操作を総称して文字マップ (英 :character map ; CM)と呼ぶ[ 9] 。
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バイト 系文字コードは、俗に「半角 文字」と呼ばれることもある。
2バイト系文字コードは、俗に「全角 文字」と呼ばれることもある。
文字符号化方式と文字コード(キャラクタセット)[ 編集 ] 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 という制限部分集合として定義する。印刷業界においては、公的な文字コード規格では包摂されている異体字 やグリフ の相違を厳密に区別したいというニーズが強く存在する。そのため、そのようなニーズに応える文字集合が企業主導で策定されている。一般的な情報交換に用いられることはない。
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文字コレクション 電算写植SKコード(SK72、SK78、外字A、外字B、外字C)写研が開発した文字コード。独自の文字セットを持つ。文字セットの大部分はすでにAdobe-Japan1に収録されている。 PMTコード印刷機械貿易が開発した文字コード。 新聞業界 電子書籍 以下は、主にメインフレーム ・オフコン などのプロプライエタリ な古いレガシーコンピュータ やレガシーなシステム、特殊な環境において利用される文字コードを含む。レガシーなものとの連携を目的とする場合を除き、パソコン で利用されることがないものが多い。
ベンダー 文字コード 特徴 マイクロソフト 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 縦書き用。
大漢和辞典 - 日本で漢字の収録がもっとも多い辞典。大漢和辞典の漢字番号が漢字の同定識別に使われることがある。官公庁 デジタル放送ARIB外字 - 日本のARIB STD-B24にある文字符号化。 企業・団体のコード筆まめ 人名外字 - 日本の筆まめ 社が自社ソフト用に作成したコード。JTBコード - 日本のJTB が自社の客室予約システムTRIPS で使用していた漢字コード[ 11] 。 コード会のコード(案) - 日本のコード会 により作成されたコード。 ^a b “文字エンコード ”. www.ibm.com (2016年6月21日). 2025年8月16日閲覧。 ^a b “HTMLで文字エンコーディングを指定する ”. www.w3.org . 2025年8月16日閲覧。 ^ 文字コード#類似の用語 を参照。^a b “Unicode Terminology: English - Japanese ”. www.unicode.org . 2025年8月16日閲覧。 ^ “Usage Survey of Character Encodings broken down by Ranking ”. w3techs.com . 2025年8月16日閲覧。 ^ kexugit. “What's the difference between an Encoding, Code Page, Character Set and Unicode? ” (英語). learn.microsoft.com . 2025年8月16日閲覧。 ^ https://docs.oracle.com/cd/E19455-01/806-5582/6jej6u9sp/index.html ^ Freed and Postel. 参考文献, ‘1.3. Charset’, p.1. ^ “UTR#17: Unicode Character Encoding Model ” (English). The Unicode Consortium (2008年11月11日). 2019年7月20日閲覧。 “a mapping from sequences of members of an abstract character repertoire to serialized sequences of bytes bridging all four levels in a single operation” ^ 文学作品に現れたJIS X 0208にない文字 (1999.2-3青空文庫 )^ 【事例編】JTB、基幹系プラットフォームを刷新 - 進化するITプラットフォーム Part8 (2009.6IT Leaders 編集部、インプレス (企業) )日本語 用の 文字コード
日本語を含む 多言語文字集合
日本語以外用の 文字集合
ソフトウェア 区分け 概念 関連トピック カテゴリ