文字コード

文字コード(もじコード、: 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文字符号化モデル[1]では、文字コードは以下の4段階に分けられる。

抽象文字集合 (ACR
符号化の対象とする順序のない文字の集合。ただし一般的な「文字」とは異なる場合があり、書記素と混同するべきではない[2]
符号化文字集合(CCS
抽象文字集合を非負整数に対応させたもの。この非負整数の範囲を符号空間、各値を符号位置といい、抽象文字は対応後、符号化文字となる[3]。抽象文字は複数の符号化文字に対応されることもある(異体字セレクタ[4]。Unicodeでは代用符号位置・非文字符号位置・未割り当て符号位置があるため、すべての符号位置が抽象文字と対応しているわけではない[5]
文字符号化形式(CEF
符号化文字集合の非負整数を符号単位列に変換する方法。文字符号化形式によってはひとつの符号化文字が複数の符号単位になる場合がある(サロゲートペア)。これを含め、文字により異なる長さの符号単位列となる文字符号化形式を可変幅、どの文字を変換しても同じ長さの符号単位列になるものを固定幅という。文字符号化形式はコンピュータ中に実際にデータとして文字を表現することを可能にする。
文字符号化方式(CES
符号単位列をバイト列に直列化する方法。符号単位が8ビットより大きい場合はエンディアンが関係してくる。

その後、バイト列をgzipなどで圧縮したり、7ビット伝送路に通すためBase64uuencodeBinHexQuoted-printableなどで変換することがあるがこれらは文字コードの範囲外である。

類似の用語

[編集]
コードセット
この語はたとえば、ソフトウェアの実装において、任意の文字コードが扱えるよう実装すること(たとえばruby 1.9のStringオブジェクト)を指してコードセット独立(CodeSet Independent, CSI)といったように使われる[6]
キャラクタセット
MIMEではキャラクタセット英語: charsetまたはcharacter set)という概念が用いられる。言葉通りには「文字集合」であるが、実際に意味しているものは文字コードに近い。
この「キャラクタセット」は「オクテットの並びを文字の並びに変換する方式」などと定義されている[7]。MIMEで実現する電子メールメッセージなどの処理を主眼に置いた概念である。
インターネット上で用いることのできる「キャラクタセット」の登録と公開はIANAが行っている(「外部リンク」参照)。
文字マップ
Unicode文字符号化モデルでは、文字列をバイト列に変換する4段階の操作を総称して文字マップ: character map; CM)と呼ぶ[8]
コードページ
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バイト系文字コードは、俗に「半角文字」と呼ばれることもある。

2バイト系符号化文字集合

[編集]

2バイト系文字コードは、俗に「全角文字」と呼ばれることもある。

文字符号化方式と文字コード(キャラクタセット)

[編集]
  • ISO/IEC 2022系(ISO/IEC 2022自体は文字符号化方式というより、そのフレームワークのようなものである)
    • ISO-2022-JPRFC 1468、俗に「JISコード」と呼ばれる文字コード。JIS X 0208対応)
    • ISO-2022-CNRFC 1922GB 2312CNS 11643[第一字面・第二字面]対応)
    • ISO-2022-KRRFC 1557KS X 1001対応)
  • EUC……拡張 UNIX コード(EUC)文字符号化方式を用いた8ビットの文字コード。ISO/IEC 2022の8ビット符号化表現に相当する。
  • シフト符号化表現の文字符号化方式を用いた8ビットの文字コード。
  • その他の文字符号化方式を用いた7ビットの文字コード。

大規模文字集合

[編集]

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 の文字符号化方式

[編集]

印刷業界の文字集合

[編集]

印刷業界においては、公的な文字コード規格では包摂されている異体字グリフの相違を厳密に区別したいというニーズが強く存在する。そのため、そのようなニーズに応える文字集合が企業主導で策定されている。一般的な情報交換に用いられることはない。

  • 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コード
      印刷機械貿易が開発した文字コード。
  • 新聞業界
  • 電子書籍

ベンダごとの文字コード

[編集]

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

ベンダー 文字コード 特徴
マイクロソフト 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-2ACOS-4メインフレームで利用される。JIPS(J)の上下1バイトをそれぞれEBCDICに変換して得られるコード。
日本電気 NEC内部コード(E) ITOSA-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 縦書き用。

その他の文字コード

[編集]

脚注

[編集]

注釈

[編集]

出典

[編集]
  1. ^ UTR#17: Unicode Character Encoding Model” (English). The Unicode Consortium (2008年11月11日). 2019年5月21日閲覧。
  2. ^ The Unicode Standard Version 12.0” (PDF) (English). The Unicode Consortium. p. 90 (2019年5月7日). 2019年5月23日閲覧。 “An abstract character does not necessarily correspond to what a user thinks of as a “character” and should not be confused with a grapheme.”
  3. ^ The Unicode Standard Version 12.0” (PDF) (English). The Unicode Consortium. p. 29 (2019年5月7日). 2019年5月21日閲覧。 “The range of integers used to code the abstract characters is called the codespace. A particular integer in this set is called a code point. When an abstract character is mapped orassigned to a particular code point in the codespace, it is then referred to as an encodedcharacter.”
  4. ^ The Unicode Standard Version 12.0” (PDF) (English). The Unicode Consortium. p. 29 (2019年5月7日). 2019年5月21日閲覧。 “an abstract character may be represented by a sequence of two (or more) other encoded characters.”
  5. ^ The Unicode Standard Version 12.0” (PDF) (English). The Unicode Consortium. p. 30 (2019年5月7日). 2019年5月21日閲覧。 “Not all assigned code points represent abstract character.”
  6. ^ http://docs.oracle.com/cd/E19455-01/806-5582/6jej6u9sp/index.html
  7. ^ Freed and Postel. 参考文献, ‘1.3. Charset’, p.1.
  8. ^ 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”
  9. ^ 文学作品に現れたJIS X 0208にない文字(1999.2-3青空文庫
  10. ^ 【事例編】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

関連項目

[編集]

外部リンク

[編集]