Unicode 【ISO/IEC 10646】 UCS / Universal Coded Character Set
コンピュータで文字データを扱うには、文字や記号の一つ一つに対応する番号(符号)を与え、文字の列を番号の列に変換する必要がある。文字と番号の対応関係を定めたルールを「文字コード」(character code)と呼び、従来は国や言語圏ごとに自分たちの使う文字のコード体系を定めて使用していた。
Unicodeは世界中の様々な言語の文字を集め、すべての文字や記号に重複しないようそれぞれ固有の番号を与えた文字コード規格である。世界の主な言語のほとんどの文字を収録しており、通貨記号や約物など文字と共に使われる記号や絵文字なども登録されている。
米大手IT企業を中心とする業界団体「Unicodeコンソーシアム」(Unicode Consortium)が仕様を策定・改訂しており、ほぼ同じものがISO(国際標準化機構)とIEC(国際電気標準会議)の合同委員会によって「ISO/IEC 10646」として国際標準となっている。ISO/IEC側ではUnicodeに相当する文字集合の名称を「UCS」(Universal Coded Character Set)としている。
コードポイント
Unicodeでは、登録された文字のそれぞれについて「コードポイント」(code point:符号点、符号位置と訳される)と呼ばれる一意の通し番号を与えている。例えば、日本語のカタカナの「ア」には12450番が割り当てられており、説明文などでは16進数を用いて「U+30A2」のように表記する。
世界中のあらゆる言語の文字を収録するという目的のため、コードポイントは最長で21ビットの値(上限は1114111番、U+10FFFF)まで用意されている。初期の規格で世界の既存の文字コードに規定された文字の多くが収録されたが、独自の文字コードを持たなかった言語や、絵文字、古代文字、新設された通貨記号などを中心に、現在も毎年のように新しい文字が追加されている。
現在はコードポイント空間全体の約12%にあたる約15万文字が割り当て済みで、規格上は文字を規定しない「私用面」(企業などが独自に使用してよい)が約13万文字(約12%)分予約済みである。残りの約75%が未割り当てとなっている。
基本多言語面と追加多言語面
コードポイントの範囲のうち、16ビット(2バイト)の値で表現できる U+0000 から U+FFFF は「基本多言語面」(BMP:Basic Multilingual Plane)と呼ばれる。ラテンアルファベットやキリル文字、ギリシャ文字、ひらがな・カタカナ、ハングル、基本的な漢字など、主要な言語の文字のほとんどをカバーしている。
当初の規格はBMPのみの予定だったが、追加収録を希望する文字のすべてを登録しきれないことが明らかになり、後から U+10000~U+10FFFF の拡張領域が追加された。このうち、U+10000~U+1FFFF の範囲を「追加多言語面」(SMP:Supplementary Multilingual Plane/補助多言語面)と呼び、古代文字や絵文字などが収録されている。
日本語文字の扱い
日本語の文字は原則として日本語文字コードのJIS規格から収録されている。当初は「JIS X 0201」(いわゆる半角文字)、「JIS X 0208」(JIS基本漢字)、「JIS X 0212」(JIS補助漢字)に定められた文字を収録したが、後に「JIS X 0213」(JIS2000/JIS2004)のすべての漢字が収録された。
なお、JIS X 0213の一部の漢字についてはBMPには収まりきらず、東アジア各国・地域の追加漢字を収録する U+20000~U+2FFFF の領域(SIP:Supplementary Ideographic Plane/追加漢字面)に収録されている。
これら元になった規格の通り、半角カナも全角とは別に「HALFWIDTH KATAKANA LETTER A」(半角カタカナのア)等の名称で、全角英数字も「FULLWIDTH LATIN CAPITAL LETTER A」(全角ラテンアルファベット大文字A)等の名称でそれぞれ収録されている。
UTF (Unicode Transformation Format/UCS Transformation Format)
様々な事情から、文字をデータとして実際に記録・伝送する際には、文字集合で定められたコードポイントをそのままビット列で表すのではなく、一定の手順で特定の形式に変換する。この変換手順を「符号化方式」(文字エンコーディング)という。
Unicodeにも標準の符号化方式がいくつか定められており、用途や処理の都合に応じて使い分ける。全体を総称して「UTF」と呼び、Unicodeでは “Unicode Transformation Format” の略、ISO/IEC 10646では “UCS Transformation Format” の略とされる。
UTFには「UTF-8」「UTF-16」「UTF-32」の3種類があり(UTF-7もあるがIETF独自拡張)、同じUnicode文字列でも符号化が違えばまったく異なるバイト列として表現される。文字データの保存・交換用として最も一般的に使われるのはUTF-8で、単にUnicodeといえばUTF-8でエンコードされたデータを意味することが多い。
UnicodeとISO/IEC 10646
ISO(国際標準化機構)とIEC(国際電気標準会議)の合同委員会(JTC 1)は、1980年代後半に国際的な文字コード標準の策定を目指し、仕様の検討を始めた。当初の構想は4バイトのコードを用いて既存の各国の文字コードをほとんどそのまま収録・統合するというものだった。
1991年に民間の企業連合であるUnicodeコンソーシアムが設立され、Unicode規格が発表されると、公的な標準と業界標準の分裂を避けるためISO/IECとの間で一本化の調整が行われることになった。議論の末、Unicodeの仕様をほぼそのままISO/IEC標準として採用することになった。
同年に発行されたUnicode 1.0規格をほぼそのまま取り込む形で1993年にISO/IEC 10646-1規格の初版が標準化され、以降はUnicode側と仕様を擦り合わせながら改訂されていった。両者は用語法など細かな点に違いがあるものの、収録文字など仕様の実質は同一となっている。
関連用語
関連リンク (外部サイト)
他の辞典による解説 (外部サイト)
この記事を参照している文書など (外部サイト)
- 東京都立図書館協議会「都立図書館ならではのサービスを考える -保有する情報資源の一層の活用を目指して-」(PDFファイル)にて引用 (2020年12月)