文字集合

出典: フリー百科事典『ウィキペディア(Wikipedia)』
2013年9月12日 (木) 23:59時点におけるKkddkkdd (トーク)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

文字集合(もじしゅうごう、テンプレート:Lang-en-short)は、文字キャラクタ (コンピュータ))をその要素(「」)とする集合である。文字セットという場合もある。

例えば、「全てのアルファベット」(a, b, c, ..., z, A, B, C, ..., Z)というのもひとつの文字集合であるし、「全てのひらがな」(あ, い, う, ..., ん)というのもまた、ひとつの文字集合である。

コンピュータにおける文字集合

テンプレート:Seealso コンピュータ上で文字を扱う場合、典型的には文字による通信を行う場合にその両端点では、どのような文字集合を使うか、あらかじめ取り決めておく必要がある。あらかじめ定義された符号化文字集合(後述)を使う、とすることが多い。

レパートリ

符号化文字集合(後述)の収録対象となる文字群をレパートリという。標準規格によって用語に違いがあり次のように定義されている。

Unicode Character Encoding Model (UTR#17)
抽象文字レパートリ (ACR: Abstract Character Repertoire)- 符号化の対象となる概念上の文字の非順序集合
Character Model for the World Wide Web 1.0: Fundamentals (W3C勧告 CharMod)
レパートリ (repertoire) - 符号化の対象となる識別された文字の集合。一つ以上の対象言語において、テキストを表現し様々なテキスト処理を効果的に可能にするため、実用的に文字が選択される。それらの文字は利用者が文字と理解するものとは厳密には一致するとは限らない。この文字の集合がレパートリと呼ばれる。
ISO/IEC 10646 (JIS X 0221)
レパートリ (repertoire) - 符号化文字集合で表現する文字の指定された集合
JIS X 0208, JIS X 0213
レパートリ (repertoire) - 符号化文字集合の一つ以上のビット組合わせによって表現される、規定された文字の集合。
IBMの文字データ表現体系 (CDRA: "Character Data Representation Architecture")
文字セット (CS: "character set") - コード化表現を前提としない、文字の定義済みセット。

符号化文字集合

コンピュータで扱う文字集合内の各文字には一意の符号点 (一般的に非負整数列) を割り当てる。集合の要素である各文字に符号点が関連付けられた文字集合を符号化文字集合と言う。符号化文字集合には、例えばJIS X 0201JIS X 0208ISO/IEC 10646(UCS-2, UCS-4)等がある。標準や規格によって用語に違いがあり次のように定義されている。

Unicode Character Encoding Model (UTR#17)
符号化文字集合 (CCS: Coded Character Set) - 概念上の文字の集合から非負整数の集合への写像として規定される。この整数の範囲は連続である必要はない。Unicode標準においてUnicodeスカラー(Unicode scalar value) の概念は非連続な非負整数として明示的に定義される。符号化文字集合が概念上の文字から整数への写像であれば、ある概念上の文字は符号化文字集合で規定されることになる。
IABモデル (RFC2130)
符号化文字集合 (CCS: Coded Character Set) - 符号化文字集合は概念上の文字の集合から整数の集合への写像である。
Character Model for the World Wide Web 1.0: Fundamentals (W3C勧告 CharMod)
符号化文字集合 (CCS: coded character set) - レパートリ中の個々の文字は対応する(数学的、抽象的な)非負整数、コードポイント区点位置面区点位置文字番号符号位置等)に関連付けられる。その結果、レパートリから非負整数の集合への写像が符号化文字集合 (CCS) と呼ばれる。
ISO/IEC 10646 (JIS X 0221)
符号化文字集合 (coded character set) - 文字集合及びその集合の文字と符号化表現との間の関係を規定するあいまいさのない規則の集合。
JIS X 0201, JIS X 0208, JIS X 0213
符号化文字集合 (coded character set)符号 (code) - 文字集合を定め、かつその集合内の文字とビット組合わせとを1対1に関連付ける、あいまいでない規則の集合。
IBMの文字データ表現体系 (CDRA)
コード・ページ (CP: "code page") - それぞれのグラフィック文字セットごと、またはグラフィック文字セットの集まりに対する、コード・ポイント (code point) の指定。一つのコード・ページの中で、コード・ポイントには特定の意味を一つだけ持たせることができる。

符号化文字集合と文字符号化方式

符号化文字集合を定義した段階では、単に使用可能な文字と符号点が関連付けられただけの状態であり、コンピュータ上でどのようなバイト列として表現するかは定義されない。符号点からバイト列に変換する方法は、文字符号化方式という別の概念として定義される(Shift_JISUTF-8等)。ASCII等、符号化文字集合と文字符号化方式の分離が明確ではないものもある。

ある文字集合に含まれる文字を用いて記述した同一の文字列であっても、使用する文字符号化方式が異なれば、異なるバイト列となる。また、異なる文字符号化方式の文字列データであっても、基となる文字集合が同一であれば、文字の欠落無く相互変換が可能である。基となる文字集合が異なっていても、変換元の文字集合が、変換後の文字集合の部分集合であれば、欠落は発生しない。ただし、部分集合であっても、符号化文字集合における文字の符号の並びが異なる場合もあり、そのような場合は巨大な変換表が必要となる(例えば、JIS X 0208はUCS-2の部分集合であるが、符号の並びは全く異なる)。ただし、近年のOSでは、標準的な機能として変換表を持っていることも多く(WindowsのMultiByteToWideChar API、UNIXlibiconv等)、アプリケーションが独自に変換表を持つ必要はあまりない。逆に、部分集合の関係にない文字集合へ変換した場合、欠落する文字が発生し、中黒点等で置き換えられたり、不適切なプログラムであれば文字化け等が発生する(ただし、同様の現象は、フォントが原因の場合もあり、文字集合の変換が原因とは即時には判断できない)。

文字符号化方式を適用する際に、複数の文字集合を組み合わせたり、文字集合の一部をベンダーが独自に置き換えることもあり、互換性問題の原因となりやすい。例えば、WindowsMacintoshで作成されたShift_JIS文書では、それぞれ基となる文字集合にベンダーが独自の修正を加えているため、完全な互換性は無い(例えば丸付き数字と括弧付き曜日など)。他にも、文字集合の僅かな差異により問題が起きやすい例は、「~」と「‾」、「\」と「¥」などである。

ISO/IEC 2022 (JIS X 0202), JIS X 0201, JIS X 0208, JIS X 0213等の定義では『符号化文字集合』と『符号』とは同義であり、交代可能な用語とされるが、UnicodeやIABモデルの定義は異なる。このため、『文字コード』と『符号化文字集合』の解釈が混同されることがある。また、文字集合の似た用語としてMIME等で利用されるIANAcharsetがあるが、charsetは符号化文字集合と文字符号化方式を合わせた概念であり、名称と実態が一致していない。

関連用語

外部リンク

テンプレート:文字コードzh:字符集