現在,私たちはコンピュータでワープロ等を使用する場合,入力の問題を別にすれば,日本語を特に意識しないで使うことができます。しかし実は日本語に限らず,アルファベットや数字などもコンピュータで使うためには,コンピュータ内部ではいくつかの仕組みが必要です。ただ日本で販売されているコンピュータは日本語を使えるような仕様で作られていますから,日本語だけを使用している場合は特に意識する必要はありません。
現在世界は国境を越えての情報交換が頻繁に行われています。これから益々複数の国の文字を扱う必要性が高まってきています。この問題に対応するために世界中の文字を同時に扱う仕組みが求められていました。これの一つの解決策がユニコードでした。ユニコードは世界中の文字を一つの仕組みの中で表す試みです。この方式を利用すれは一つのプログラムの中に色々な言語混在して利用できるようになります。
と言えるでしょう。 ここでは日本語とユニコードについて簡単にまとめます。 ユニコードについての詳細で正確な理解は,ユニコード規格の本家
コンピュータで文字を使用する場合,その文字集合を確定する必要があります。また文字集合を決めたとき,その集合に含まれる各々の文字を対応させる方法を決める必要もあります。このように,文字とその対応方法を決めた集合を符号化文字集合と言います。
ユニコードの符号化文字集合
となります。
符号化文字集合に対して,実際のコンピューターでそれらの文字を表示する方法は一通りではありません。日本語の場合,JIS符号化,シフトJIS符号化,EUC符号化の3方法があります。JIS
X 0213
でもそれぞれの符号化方式について規定しています。符号化方式は,コンピューターでの具体的な取扱い方法ですので,コンピューター内部のみでなく,ファイル形式も規定します。ですから,例えば,同じ文字でも,JIS符号化で表現されたファイルと,シフトJIS符号化で表現されたファイルは,実際にフィルに記録される内容が異なります。ですから,日本語を正しく取り扱うためには,それぞれその符号化法に対応した処理ができなければなりません。そうでないと正しく読み取ることや,処理することもできません。
となります。
ユニコードは世界中の文字を一つの体系で表そうとしていますから,ユニコードの符号化文字集合は世界中の文字を含んでいます。その結果,かなり大きなものです。欧米で使われているラテン文字はもちろん,日本語の他,ギリシア語,ロシア語,アラビア語,中国語,ハングルなどが含まれています。1991年にバージョン1.0.0 が発表された時は,7161個の文字が登録されていましたが,その後バージョンが上がるにつれて,文字が増え,2006年にバージョン5.0になった時は,99089文字が登録されました。2009年10月現在,バージョン5.2 で,107361個の文字が登録されています。近い将来携帯で使われている絵文字も登録されるようです。 ユニコードの符号化文字集合は,16進数で番号付けされています。文字はその番号に U+
を付け加えて表すことになっています。例えば,672C番目の文字は,U+672C と表します。
となっています。
となります。 ユニコードの文字符号化方式は主として3種類あります。
です。(ここで UTF はUnicode Transformation Format
を意味します。)それぞれ,UTF-32は,32ビットを使ってユニコード文字を表し,UTF-16は,16ビットを使い,UTF-8は8ビットを使います。U+10000以上の文字は,16ビットでは表せませんから,UTF-16では,2組の16ビットを使って一文字を表します。ですから,UTF-16では,一文字を表すに必要なメモリーは固定されていません。16ビット1個の場合と,16ビット2個の場合があります。UFT-8は,8ビット1個から4個を使って表します。
となります。
ユニコードは世界中の文字を表すことを目的としていますので,結合文字という特別な文字の扱いがあります。例えば, が と言う字は,「か」に濁点「゙ 」という風に言います。つまり「が」は「か」に「゙ 」で合成されると考えられます。 「か」はU+304Bですし,実は, 「゙ 」はU+3099 というユニコード文字です。これらを合わせると,「が」が合成されます。つまりこの場合, が = か +゙ となります。ここで,「か」を基底文字,「゙ 」を結合文字,今の場合「が」を合成済み文字といいます。日本語に関連した結合文字は,「゙ 」や「゚ 」などがあります。欧米語では,「́」や「̂」などあります。 これはこれで良いのですが,関連して少し困った状況が存在します。実は,例えば,上の「が」は結合文字を使って2文字で表すことになりますが,この文字の作り方とは別に「が」という文字がユニコードに登録されています。U+304C は一文字「が」を表します。このように結合文字を使って合成された文字の多くが,一文字として別に登録されています。つまりそれらは,文字としての表し方が,ユニコードとして2種類あることになります。 文字列を比較して処理をするときは,基本的にはユニコードのコード番号で処理しますから,この状況では正しく処理されないことになります。例えば「が」を検索する場合,U+304B とU+3099 として検索すれば,U+304Cで表されている「が」は見つからないことになります。 この状況に対応するため,ユニコードでは,正規化(normalize)という概念があります。これは,文字列を表す標準的な形式を定めておき,その形に変換してから処理をするというものです。この正規化の形式もまず次の2種があります。
D型正規化形式は,結合文字などで表されるものを,結合文字を使って分解します。C型正規化形式 はその文字を結合された等価な文字に合成します。例えば 元の文章 :「に」「っ」「ほ」「゚ 」「ん」「じ」「ん」 D型正規化形式:「に」「っ」「ほ」「゚ 」「ん」「し」「゙ 」「ん」 C型正規化形式:「に」「っ」「ぽ」「ん」「じ」「ん」 となります。この他の正規化として
というものもあります。これは,等価の文字ではなくで互換文字についての正規化です。互換とは,実質同じ意味の文字という意味で,例えば,日本語では 「1」(全角文字1)と「1」(半角文字1) などが対応します。まとめると,
となります。
ユニコードは文字を表す一つの仕組みですが,実際にコンピューターの画面に文字を表示するためには,対応する文字の形が必要です。それがフォントです。コンピューターで文字を表示する場合,文字コードを利用するフォントに対応させます。当然ですが同じ文字でもフォントが違えば,文字の形は微妙に異なります。例えば,「日本」という文字も
のように使うフォントによって形が異なります。上にフォントは日本語フォントですが例えば中国語の漢字を表すにはこれらのフォントでは表すことができません。例えば 𠮿 という文字は日本の文字にはありませんので,対応するフォントが無ければ表示はできません。この文字を表示するには,"MingLiu" などの中国語漢字用フォントが必要になります。ワープロなどでは,フォントの判定をソフト側で行い必要なフォントがコンピューターにインストルされているれば,それを利用して表示します。しかし,エディターなどではそれに対応していないのが普通ですので,ユーザー側でとくに指定しなければ □ と表示されてしまいます。 まとめると,
となります。
現在の私たちは,一つの国に閉じて生活をしている訳ではなく,世界中の多くの国々と交流をして生活をしています。そしてこの傾向は進むことはあれ,後退することはないでしょう。ですから,色々な国々について,各国々の特徴を尊重しながら,それらを統一的な方法で扱うことができれば大変便利で効率的でしょう。コンピューターでの文字の取扱いについてのその試みの一つがユニコードです。 まとめると,
となります。 |