文字コード規格の基礎 この記事は,日経ソフトウエア 1999年10月号に掲載したものです。それ以降の情報が盛り込まれていませんので,現在とは異なる場合があります。 文字コードは間違いなく情報を交換するための「決まりごと」なので,正確を期すため厳密な仕様が規定されている。だが,その仕様そのものを実装するプログラムを作る場合を除けば,プログラマが仕様の詳細を隅々まで理解している必要はない。六法全書を読んでいなくても問題なく普段の生活ができるようなものだ。 ここでは,通常のプログラミングをするうえで必要と思われる範囲のことを,なるべく簡潔に説明したい。「半角カナ」のような呼び名は正確さを欠くものだが,多くの人に伝わりやすいので説明の中でも使っていく。説明を簡略化するため「正確な仕様を知りたいときは規格書そのものを必ず参照してほしい」と書きたいところだが,そのようなケースはめったにない。規格書を読み解くために時間を費やすよりは,だれかに聞いたり実際に試したりして疑問を解決する方が早い場合が多いだろう。 そろそろ具体的な説明に入ろう。最初にはっきりさせておく必要があるのは次の点だ。一般に「文字コード」と言う場合, (1)文字の集合 という要素がある。この二つを区別して考えることが重要だ。もちろん大きな関連はあるのだが,ごちゃごちゃのままでは「わからなく」なる大きな要因となる。 代表的な文字集合の規格「文字の集合」とは,ある規格がどのような文字を規定しているかということだ。文字の集合を決めている主な規格を表1に示す。それぞれの規格が決めている文字集合には重なる部分がある。それを示したのが図1である。
ASCII JIS X 0201 ASCIIおよびX 0201の文字は基本的に1バイトで表現できる。固定ピッチの日本語フォントでは,1バイト文字が漢字の半分の幅で表示されるので,「半角文字」と呼ぶことも多い。 JIS X 0208,X 0212,X 0213 1990年には,X 0208に収容されていない漢字を使いたいという要求に基づき,非漢字266文字,漢字5801文字を規定したX 0212(補助漢字)が制定された。ところがシフトJISにはこれだけの文字数を収容する余地がなかったので,パソコンでは補助漢字が採用されず,結果的に現状ではパソコン以外でもほとんど利用されていない。 この問題点をふまえて,現在X 0212に代わる新しい規格の策定が進んでいる(仮称JIS X 0213)*5。99年内に制定される予定。シフトJISでのエンコーディングを考慮したものであるが,同時に収容する文字の選定も一からやり直している。したがって,X 0212とX 0213で共通している文字もあるが,片方だけにしか入っていない文字も多い。 マイクロソフト標準キャラクタセット
X 0212は一部のIBM拡張文字を含んでいるが全部ではない。一方X 0213はWindowsの実装を配慮して,NEC特殊文字をほぼそのまま収容している。IBM拡張文字も収容する方向にあるが,X 0208およびX 0213の漢字採用基準*8に当てはまらないものもあるため,すべてをX 0213が含んでいるわけではない。 なお,Windows 98に含まれるフォントのうち,MS明朝とMSゴシックはX 0212の書体データも(完全な形ではないようだが)備えている。IME 98を使ってUnicodeのコードを指定すると表示される。ただし既存のアプリケーションがその文字を受け取れるとは限らない。 Unicode Unicodeには中国,日本,韓国(CJK)の漢字をまとめて収容する領域があり,そこにX 0208およびX 0212のすべての文字が含まれている。ただし漢字の並び順はJISと全く異なるし,日本にない漢字もあるのでコードが連続していない。また,NEC特殊文字とIBM拡張文字,1バイト文字のASCIIおよびX 0201も,半角カナを含めてすべて入っている。したがって,文字の集合としては上述の既存規格を包含している。 ただし現在策定中のX 0213には,Unicodeにはない漢字や記号も含まれる予定だ。将来その文字がUnicodeに追加される可能性はあるが,その場合でも時間差がある。また,フォント・データが作られるまでの時間差もある。したがって,今後Unicodeに含まれないX 0213の文字を使うような場合があったら要注意だ。
出典:日経ソフトウエア 1999年10月号
86ページより
(記事は執筆時の情報に基づいており,現在では異なる場合があります) |