文字コード(もじコード、)とは、識別番号を用いて文字などの記号を表す規則である。一般的に、通信技術やコンピュータで使用されるものを指す。文字エンコードまたは文字エンコーディングとも呼ばれる文字コード#類似の用語を参照。。
概説 コンピュータや通信などでは、情報は全て二進数のデジタルデータ(1と0の数値の列)形式で表されている。そのため、文字などを直接的に表現・記録することはできない。データを文字として扱うためには、各文字に通し番号(二進数からなる数値)を割り当て、その対応規則から文字情報を参照する体系が必要である。この体系が文字エンコードである。
文字エンコードで定義される文字は、キャラクタまたは符号化文字(英:coded character)と呼ばれる。キャラクタは、自然言語の文字、数字、句読点、その他の記号、そして表示に関わる要素(制御文字)などが含まれる。体系内で登録される全てのキャラクタは符号化文字集合(英:coded character set )と呼ばれ、キャラクタに対応している数値は符号値(英:code value)と呼ばれる。
例えば、文字エンコードの一つUTF-8では、英文字「A」は8ビット値「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)といったように使われるhttps://docs.oracle.com/cd/E19455-01/806-5582/6jej6u9sp/index.html。
キャラクタセット MIMEではキャラクタセット()という概念が用いられる。言葉通りには「文字集合」であるが、実際に意味しているものは文字コードに近い。 この「キャラクタセット」は「オクテットの並びを文字の並びに変換する方式」などと定義されているFreed and Postel. 参考文献, ‘1.3. Charset’, p.1.。MIMEで実現する電子メールメッセージなどの処理を主眼に置いた概念である。 インターネット上で用いることのできる「キャラクタセット」の登録と公開はIANAが行っている(「外部リンク」参照)。
文字マップ Unicode文字符号化モデルでは、文字列をバイト列に変換する4段階の操作を総称して文字マップ(; 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(、俗に「JISコード」と呼ばれる文字コード。JIS X 0208対応) ISO-2022-JP-1(、JIS X 0208とJIS X 0212に対応) ISO-2022-JP-2(、多言語拡張。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(、GB 2312、CNS 11643[第一字面・第二字面]対応) ISO-2022-CN-EXT(、GB 2312、ISO-IR-165、CNS 11643[第一字面から第七字面]対応) ISO-2022-KR(、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(、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(、、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にない文字を集めた文字リスト文学作品に現れたJIS X 0208にない文字(1999.2-3青空文庫)
ベンダごとの文字コード 以下は、主にメインフレーム・オフコンなどのプロプライエタリな古いレガシーコンピュータやレガシーなシステム、特殊な環境において利用される文字コードを含む。レガシーなものとの連携を目的とする場合を除き、パソコンで利用されることがないものが多い。
ベンダー文字コード特徴マイクロソフト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の一つ。マイクロソフトcp51932Windows-31JをEUC-JPで表したもの。サン・マイクロシステムズcp942Ccp942の拡張。サン・マイクロシステムズcp943Ccp943の拡張。AppleMacJapaneseApple版Shift_JIS。富士通メインフレーム(Mシリーズ、GSシリーズ)で利用される。JIS C 6226-1978をGR(Graphic Right)に展開し、その上方エリアに「JEF拡張漢字」というベンダ選定拡張漢字を配置。富士通EUC-U90DS/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」というベンダ選定拡張漢字を配置。日本IBMIBM漢字(DBCS-Host)メインフレーム(システム/360系)、AS/400系オフコン(現行製品ではIBM i搭載のPowerSystem)で利用される。JIS C 6226-1978以前に制定されたため、完全に独自の漢字表を使用。漢字部分については、Windows-31Jの第一・第二水準漢字およびIBM拡張文字との間で一対一の対応がある。日本IBMcp930メインフレームで利用される。日本IBMcp932IBM OS/2で利用される。マイクロソフトのcp932との同一性は未確認。日本IBMcp939メインフレームで利用される。日本IBMcp942IBM OS/2で利用される。日本IBMcp943IBM OS/2で利用される。日本ユニシスユニバック系メインフレームで利用される。JIS X 0208-1983をGRに展開し、その上方および左方エリアにベンダ選定拡張漢字を配置。日本ユニシスバロース系のコンピュータで利用される。三菱電機・MELCOM漢字三菱電機のメインフレームで利用される。JIS X 0208-1983をGRに展開し、その上方エリアにベンダ選定拡張漢字を配置。DECDEC 漢字ミニコンのVAX用OSであるVMSで利用される。JIS X 0208-1983をGRに展開し、その左方エリアにベンダ選定拡張漢字を配置。DECSuper 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で使用していた漢字コード【事例編】JTB、基幹系プラットフォームを刷新 - 進化するITプラットフォーム Part8(2009.6 IT Leaders編集部、インプレス (企業))。 コード会のコード(案) - 日本のコード会により作成されたコード。
脚注
注釈
出典
参考文献 安岡孝一、安岡素子『文字コードの世界』東京、東京電機大学出版局、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 によって登録されている文字コードの情報一覧) 文字コードについて 文字コードの話 文字コード入門 : 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 日本語訳