文字集合(character set)とは、
文字、特に
コンピュータ上で扱われる
文字を要素とする
集合のことです。
文字セットとも呼ばれます。例えば、「すべてのアルファベット(a, b, c, ..., z, A, B, C, ..., Z)」や「すべてのひらがな(あ, い, う, ..., ん)」は、それぞれ独立した
文字集合です。
コンピュータで
文字を扱う際、特に
文字による
通信を行う場合、送受信の両端でどの
文字集合を使うかを事前に決める必要があります。多くの場合、あらかじめ定義された符号化
文字集合(後述)が利用されます。
レパートリ
符号化
文字集合に収録される
文字のグループをレパートリと呼びます。標準や規格によって定義が異なりますが、概ね以下のように整理できます。
抽象文字レパートリ (ACR):符号化の対象となる概念上の文字の非順序集合。Unicode Character Encoding Model (UTR#17) で定義されます。
レパートリ:符号化の対象となる識別された
文字の
集合。実用的なテキスト表現のために選ばれた
文字群で、Character Model for the World Wide Web 1.0 (
W3C勧告 CharMod) で定義されます。
レパートリ:符号化文字集合で表現する文字の指定された集合。ISO/IEC 10646|ISO_IEC 10646 (JIS X 0221) で定義されます。
レパートリ:符号化
文字集合の
ビット組み合わせで表現される規定された
文字の
集合。
JIS X 0208,
JIS X 0213などで定義されます。
文字セット (CS):コード化表現を前提としない、文字の定義済みセット。IBMの文字データ表現体系 (CDRA) で用いられます。
符号化文字集合(coded character set)とは、文字集合内の各文字に一意の符号化表現を関連付ける規則のことです。例えば、JIS X 0201、JIS X 0208、ISO/IEC 10646|ISO_IEC 10646 (UCS-2, UCS-4) などが該当します。各規格での定義は以下の通りです。
coded character set (code):
文字集合と、その
文字と
ビット組み合わせとの一対一対応を定める規則。
ISO/IEC 646|ISO_IEC 646,
ISO/IEC 8859|ISO_IEC 8859, ANSI X3.4 (
ASCII) で定義されます。
符号化文字集合 (coded character set), 符号 (code):文字集合と文字とビット組み合わせの対応を定める規則。JIS X 0201, JIS X 0208, JIS X 0213 で定義されます。
符号化文字集合 (coded character set):
文字集合と符号化表現との関係を定める規則。
ISO/IEC 10646|ISO_IEC 10646 (
JIS X 0221) で定義されます。
符号化文字集合 (CCS):概念上の文字の集合から非負整数の集合への写像。Unicode Character Encoding Model (UTR#17) や IABモデル (RFC2130) で定義されます。
符号化文字集合 (CCS):レパートリの
文字と対応する非負整数(コードポイント)との関連付け。Character Model for the World Wide Web 1.0 (
W3C勧告 CharMod) で定義されます。
コード・ページ (CP):グラフィック文字セットごとのコードポイントの指定。IBMの文字データ表現体系 (CDRA) で用いられます。
ASCIIやISO/IEC 8859|ISO_IEC 8859のような符号化文字集合は単独で使われることが多いですが、EUC-JP、Shift_JIS、UTF-8のように複数の符号化文字集合を組み合わせたり、変形して利用する文字コードもあります。このような、符号化文字集合を組み合わせて運用する方式を文字符号化方式と呼びます。
同じ文字列でも、使用する文字符号化方式が異なると異なるバイト列になります。しかし、基となる文字集合が同じであれば、文字の欠落なく相互変換が可能です。ただし、文字集合が異なると、変換時に文字が欠落したり、文字化けが発生する可能性があります。また、文字の符号の並びが異なる場合、巨大な変換表が必要になることがあります。
文字符号化方式を適用する際に、複数の文字集合を組み合わせたり、ベンダーが独自に文字集合の一部を置き換えたりすることがあります。これにより、互換性問題が発生しやすくなります。例えば、WindowsとMacintoshで作成されたShift_JIS文書では、それぞれ異なる文字集合が使われているため、完全に互換性がありません。また、「~」と「‾」、「\」と「¥」のように、わずかな文字の違いでも問題が発生することがあります。
用語の混同
ISO/IEC 646|ISO_IEC 646などの定義では「符号化文字集合」と「符号」は同義ですが、UnicodeやIABモデルでは異なる意味で使われることがあります。また、MIMEなどで使われるIANAのcharsetは、符号化文字集合と文字符号化方式を合わせた概念であり、名称と実態が一致しない場合があります。
関連用語
文字コード
文字符号化方式
コードページ
出典
UTR#17: Character Encoding Model(Unicodeの文字符号化モデル)
RFC2130: The Report of the IAB Character Set Workshop held 29 February 1 March
Character Data Representation Architecture Reference(IBMの文字データ表現体系 (CDRA) リファレンス)
IBM Character set by GCSGID(
IBMの
文字セット登録簿)
*
IBM Code page by CPGID(
IBMのコード・ページ登録簿)
この文章は、
文字集合、符号化
文字集合、
文字符号化方式に関する重要な概念を、より分かりやすく解説したものです。