「文字コード」の版間の差分
m Bot作業依頼: Apple関連記事の改名に伴うリンク修正依頼 (Apple|Apple) - log |
|||
279行目: | 279行目: | ||
**cp943C |
**cp943C |
||
**:cp943の拡張 |
**:cp943の拡張 |
||
*[[Apple]] |
|||
*[[アップル (企業)|アップル]] |
|||
**[[MacJapanese]] |
**[[MacJapanese]] |
||
**:アップル版[[Shift_JIS]] |
**:アップル版[[Shift_JIS]] |
2021年5月20日 (木) 10:51時点における版
文字コード(もじコード)は、コンピュータ上で文字(キャラクタ)を利用する目的で各文字に割り当てられるバイト表現。もしくは、バイト表現と文字の対応関係(文字コード体系)のことを指して「文字コード」と呼ぶことも多い。本記事では主に後者について記述する。
概説
文字コードとは、コンピュータなどの電子媒体において、文章を画像などの図形データとしてではなくテキストの形式で扱う場合に、その各文字(単一の文字でない場合もある)に対して持っている符号(コード)のことである。
文字を特定の符号で扱う手段はコンピュータが誕生するよりも昔から存在した(モールス符号などもそのようにして使用された文字を符号化した情報の一種である)。また、文字を表形式にして扱う方法も古くから存在し(日本語の仮名の五十音図もその一種である)、利用されてきた。コンピュータにおいては、文字などを表形式などを用いて体系的に符号化した利用がその性質上強く行われ、それらが文字コードとなっている。
文字コードの歴史は電気通信の歴史とほぼ等しい。古くはテレックスで用いられた国際電信アルファベット第2、アメリカ規格協会 (ASA) が定めた ASCII、IBM によって開発された EBCDIC 等があった。しかしコンピュータシステムが多くの言語圏で利用されるようになるにつれて文字コードの種類も増大し、現在では100種類以上の代表的な文字コードが存在する。
コンピュータの発展が早かった英語圏やその他のアルファベットを使用する言語(主に西洋)、日本語、中国語、韓国語などは早くから言語固有の文字コードが制定され利用可能になった。その他の大部分の言語もUnicodeの普及とともにコンピュータ上で文字を正常に表現することができるようになりつつある。
多様な文字コードの存在は文字コードの互換性問題を引き起こす。文字コードの互換性問題とは、ある文字コードで記録されたデータを別の文字コードに変換しようとするとき、一方で定義されている文字がもう一方では定義されていない(あるいは用途によって2種類の文字に分けられている)という問題である。日本語では、これは特殊な漢字(名字や団体名に使われる漢字)などが入ったデータベースを扱うときなどに問題となる。また文字コードの変換にかかるコストはばかにならないことが多い。
近年、これらの互換性問題を解決するためにすべての言語の文字に、一つの文字コード体系で対応する試みである Unicode が作られ、オペレーティングシステムや Java などの内部コードとして広く利用されている。Microsoft Windows や macOS などの最近の OS は、表面上は Unicode 以外の文字コードを使っていても内部処理上は Unicode に変換して処理しているものが多い。この場合、波ダッシュのように、字によってはUnicode と各文字コードの変換テーブルが OS によって異なるなどの問題が生じる場合がある。
符号化文字集合、文字符号化方式
文字コードを、以下の2段階に区別する場合がある。
「符号化文字集合」や「文字符号化方式」といった用語は標準化団体によっても定義が異なるため、「これは符号化文字集合だ、いや文字符号化方式だ」といった議論は意味をなさないことがある。元来、文字コードは文字の集合の各文字に直接一意なバイト表現を割り当てただけのシンプルなものだったが、JIS X 0208というひとつの文字集合に対してISO-2022-JP、EUC-JP、Shift_JISなど複数の符号化方式が存在するようになってきたり、逆に複数の文字集合を切り替えて使うISO-2022-JPやEUC-JPといった符号化方式が用いられるようになってきたため、「符号化文字集合」と「文字符号化方式」とを区別するようになったと考えられる。
両者の区分は IETF では用いられる一方、ISO/IEC や JIS では「文字符号化方式」を「符号化文字集合の構造」あるいは「文字符号の構造及び拡張法」として規定している。
Unicode文字符号化モデル
Unicode文字符号化モデル[1]では更に進んで、文字コードは以下の4段階に分けられる。
- 符号化文字集合(CCS)
- 抽象文字集合を非負整数に対応させたもの。この非負整数の範囲を符号空間、各値を符号位置といい、抽象文字は対応後、符号化文字となる[3]。抽象文字は複数の符号化文字に対応されることもある(異体字セレクタ)[4]。Unicodeでは代用符号位置・非文字符号位置・未割り当て符号位置があるため、すべての符号位置が抽象文字と対応しているわけではない[5]。
- 文字符号化形式(CEF)
- 符号化文字集合の非負整数を符号単位列に変換する方法。文字符号化形式によってはひとつの符号化文字が複数の符号単位になる場合がある(サロゲートペア)。これを含め、文字により異なる長さの符号単位列となる文字符号化形式を可変幅、どの文字を変換しても同じ長さの符号単位列になるものを固定幅という。文字符号化形式はコンピュータ中に実際にデータとして文字を表現することを可能にする。
- 文字符号化方式(CES)
- 符号単位列をバイト列に直列化する方法。符号単位が8ビットより大きい場合はエンディアンが関係してくる。
その後バイト列を、gzipなどで圧縮したり、7ビット伝送路に通すためBase64、uuencode、BinHex、Quoted-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点を掛けた8836を超える文字が定義可能であるため)や、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
- 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 対応)
- ISO-2022-JP (RFC 1468、俗に「JIS コード」と呼ばれる文字コード。JIS X 0208 対応)
- 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 対応)
- EUC-TW (CNS 11643 対応)
- EUC-JP (JIS X 0208 対応)
- シフト符号化表現の文字符号化方式を用いた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 対応)
- Shift_JIS (JIS X 0208 対応)
- その他の文字符号化方式を用いた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 の文字符号化方式
- UTF-8
- UTF-16 文字符号化形式
- UTF-32 文字符号化形式
- 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コード
- 印刷機械貿易が開発した文字コード
- SKコード (SK72, SK78, 外字A, 外字B, 外字C)
- 新聞業界
- 電子書籍
- BBeB 標準文字セット
- ユニコードをベースにソニーが拡張
- 新潮文庫の100冊の外字
- 青空文庫外字
- BBeB 標準文字セット
ベンダごとの文字コード
以下は、主にメインフレーム・オフコンなどのプロプライエタリなレガシーコンピュータやレガシーなシステム、特殊な環境において利用される文字コードを含む。レガシーなものとの連携を目的とする場合を除き、パソコンで利用されることがないものが多い。
- マイクロソフト
- 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で表したもの
- cp932
- サン・マイクロシステムズ
- cp942C
- cp942の拡張
- cp943C
- cp943の拡張
- cp942C
- Apple
- MacJapanese
- アップル版Shift_JIS
- MacJapanese
- 富士通
- NEC
- 日立
- KEIS(78) 〈ケイスナナハチ〉
- メインフレーム(M シリーズ、AP シリーズ)で利用される。JIS C 6226-1978 を GR に展開し、その上方エリアに「拡張文字セット3」というベンダ選定拡張漢字を配置。
- KEIS(83) 〈ケイスハチサン〉
- メインフレーム(M シリーズ、AP シリーズ)で利用される。JIS X 0208-1983 を GR に展開し、その上方エリアに「拡張文字セット3」というベンダ選定拡張漢字を配置。
- KEIS(90) 〈ケイスキュウマル〉
- EUC-HJ
- KEIS(78) 〈ケイスナナハチ〉
- 日本IBM
- IBM漢字 (DBCS-Host)
- メインフレーム(システム/360 系)、AS/400 系オフコン(現行製品では IBM i搭載のPowerSystem)で利用される。JIS C 6226-1978 以前に制定されたため、完全に独自の漢字表を使用。漢字部分については、Windows-31J の第一・第二水準漢字及び IBM 拡張文字との間で一対一の対応がある。
- CCSID 290
- CCSID 897
- CCSID 930
- CCSID 932
- CCSID 939
- CCSID 942
- CCSID 943
- CCSID 1027
- CCSID 1399
- CCSID 2962
- CCSID 5026
- CCSID 5035
- cp930
- メインフレームで利用される。
- cp932
- IBM OS/2で利用される。マイクロソフトのcp932との同一性は未確認。
- cp939
- メインフレームで利用される。
- cp942
- IBM OS/2で利用される。
- cp943
- IBM OS/2で利用される。
- IBM漢字 (DBCS-Host)
- 日本ユニシス
- 三菱電機
- JSII 〈ジェイエスツー〉(「MELCOM 漢字」とも呼ばれる)
- 三菱電機のメインフレームで利用される。JIS X 0208-1983 を GR に展開し、その上方エリアにベンダ選定拡張漢字を配置。
- JSII 〈ジェイエスツー〉(「MELCOM 漢字」とも呼ばれる)
- DEC
- DEC 漢字
- ミニコンの VAX 用 OS である VMS で利用される。JIS X 0208-1983 を GR に展開し、その左方エリアにベンダ選定拡張漢字を配置。
- Super DEC 漢字
- ミニコンの VAX 用 OS である VMS で利用される。JIS X 0208-1983 を GR に展開し、その左方エリアにベンダ選定拡張漢字を配置。そして、シングルシフトの GR 展開で JIS X 0212 を表現。
- DEC 漢字
- WZ Software
- SJIS-EX
- アドビ
- UniJIS-UCS2-H
- UniJIS-UCS2-V
- UniJIS-UCS2-HW-H
- UniJIS-UCS2-HW-V
- UniJIS-UTF16-H
- UniJIS-UTF16-V
- 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 縦書き用
- EUC-H
- EUC-V
- H
- V
その他の文字コード
- 大漢和辞典 - 日本で漢字の収録が最も多い辞典。大漢和辞典の漢字番号が漢字の同定識別に使われることがある。
- 官公庁
- デジタル放送
- ARIB外字 - ARIB STD-B24にある文字符号化。
- 企業・団体のコード
参考文献
- 安岡孝一、安岡素子『文字コードの世界』東京、東京電機大学出版局、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。
脚注
- ^ “UTR#17: Unicode Character Encoding Model” (English). The Unicode Consortium (2008年11月11日). 2019年5月21日閲覧。
- ^ “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.”
- ^ “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.”
- ^ “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.”
- ^ “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.”
- ^ http://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”
- ^ 【事例編】JTB、基幹系プラットフォームを刷新 - 進化するITプラットフォーム Part8
関連項目
外部リンク
- 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